tnp-core 18.0.63 → 18.0.64

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/README.md +20 -20
  2. package/assets/shared/shared_folder_info.txt +1 -1
  3. package/browser/README.md +24 -24
  4. package/browser/esm2022/lib/helpers-messages.mjs +2 -5
  5. package/browser/esm2022/lib/utils.mjs +9 -3
  6. package/browser/fesm2022/tnp-core.mjs +9 -5
  7. package/browser/fesm2022/tnp-core.mjs.map +1 -1
  8. package/cli.backend.js +2 -2
  9. package/cli.backend.js.map +1 -1
  10. package/client/README.md +24 -24
  11. package/client/esm2022/lib/helpers-messages.mjs +2 -5
  12. package/client/esm2022/lib/utils.mjs +9 -3
  13. package/client/fesm2022/tnp-core.mjs +9 -5
  14. package/client/fesm2022/tnp-core.mjs.map +1 -1
  15. package/env.d.ts +2 -0
  16. package/environments/angular-node-app/env.angular-node-app.__.d.ts +3 -0
  17. package/environments/angular-node-app/env.angular-node-app.dev.d.ts +3 -0
  18. package/environments/angular-node-app/env.angular-node-app.localhost.d.ts +3 -0
  19. package/environments/angular-node-app/env.angular-node-app.prod.d.ts +3 -0
  20. package/environments/angular-node-app/env.angular-node-app.stage.d.ts +3 -0
  21. package/environments/docs-webapp/env.docs-webapp.__.d.ts +3 -0
  22. package/environments/electron-app/env.electron-app.__.d.ts +3 -0
  23. package/environments/electron-app/env.electron-app.prod.d.ts +3 -0
  24. package/environments/mobile-app/env.mobile-app.__.d.ts +3 -0
  25. package/environments/mobile-app/env.mobile-app.prod.d.ts +3 -0
  26. package/environments/npm-lib-and-cli-tool/env.npm-lib-and-cli-tool.__.d.ts +3 -0
  27. package/environments/npm-lib-and-cli-tool/env.npm-lib-and-cli-tool.prod.d.ts +3 -0
  28. package/environments/vscode-plugin/env.vscode-plugin.__.d.ts +6 -0
  29. package/environments/vscode-plugin/env.vscode-plugin.prod.d.ts +4 -0
  30. package/index.js.map +1 -1
  31. package/lib/build-info._auto-generated_.js.map +1 -1
  32. package/lib/command-exists.js.map +1 -1
  33. package/lib/core-cli.js.map +1 -1
  34. package/lib/core-config.js.map +1 -1
  35. package/lib/core-imports.js.map +1 -1
  36. package/lib/core-models.js.map +1 -1
  37. package/lib/deep/hello-world.d.ts +0 -0
  38. package/lib/deep/hello-world.js +2 -0
  39. package/lib/deep/hello-world.js.map +1 -0
  40. package/lib/framework-name.js.map +1 -1
  41. package/lib/helpers-isomorphic.js.map +1 -1
  42. package/lib/helpers-messages.js +2 -4
  43. package/lib/helpers-messages.js.map +1 -1
  44. package/lib/helpers.js.map +1 -1
  45. package/lib/index._auto-generated_.js.map +1 -1
  46. package/lib/index.js.map +1 -1
  47. package/lib/node-chalk-mock.js +2 -2
  48. package/lib/node-chalk-mock.js.map +1 -1
  49. package/lib/node-path-mock.js +2 -2
  50. package/lib/node-path-mock.js.map +1 -1
  51. package/lib/progress-data.js.map +1 -1
  52. package/lib/public-api.js.map +1 -1
  53. package/lib/required-global-npm-packages.js.map +1 -1
  54. package/lib/utils.js +35 -30
  55. package/lib/utils.js.map +1 -1
  56. package/migrations/index.js.map +1 -1
  57. package/migrations/migrations_index._auto-generated_.js.map +1 -1
  58. package/package.json +1 -1
  59. package/tmp-environment.json +24 -3
  60. package/websql/README.md +24 -24
  61. package/websql/esm2022/lib/helpers-messages.mjs +2 -5
  62. package/websql/esm2022/lib/utils.mjs +9 -3
  63. package/websql/fesm2022/tnp-core.mjs +9 -5
  64. package/websql/fesm2022/tnp-core.mjs.map +1 -1
  65. package/taon.jsonc +0 -56
package/cli.backend.js CHANGED
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.dummy1744319201726 = dummy1744319201726;
4
- function dummy1744319201726() { }
3
+ exports.dummy1744659092555 = dummy1744659092555;
4
+ function dummy1744659092555() { }
5
5
  //# sourceMappingURL=cli.backend.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli.backend.js","sourceRoot":"","sources":["c:/Users/darek/projects/npm/taon-dev/tnp-core/src/cli.backend.ts"],"names":[],"mappings":";;AAAA,gDAAwC;AAAxC,SAAgB,kBAAkB,KAAK,CAAC"}
1
+ {"version":3,"file":"cli.backend.js","sourceRoot":"","sources":["/Users/dfilipiak/npm/taon-dev/tnp-core/src/cli.backend.ts"],"names":[],"mappings":";;AAAA,gDAAwC;AAAxC,SAAgB,kBAAkB,KAAK,CAAC"}
package/client/README.md CHANGED
@@ -1,24 +1,24 @@
1
- # MyLib
2
-
3
- This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 13.2.0.
4
-
5
- ## Code scaffolding
6
-
7
- Run `ng generate component component-name --project my-lib` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project my-lib`.
8
- > Note: Don't forget to add `--project my-lib` or else it will be added to the default project in your `angular.json` file.
9
-
10
- ## Build
11
-
12
- Run `ng build my-lib` to build the project. The build artifacts will be stored in the `dist/` directory.
13
-
14
- ## Publishing
15
-
16
- After building your library with `ng build my-lib`, go to the dist folder `cd dist/my-lib` and run `npm publish`.
17
-
18
- ## Running unit tests
19
-
20
- Run `ng test my-lib` to execute the unit tests via [Karma](https://karma-runner.github.io).
21
-
22
- ## Further help
23
-
24
- To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
1
+ # MyLib
2
+
3
+ This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 13.2.0.
4
+
5
+ ## Code scaffolding
6
+
7
+ Run `ng generate component component-name --project my-lib` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project my-lib`.
8
+ > Note: Don't forget to add `--project my-lib` or else it will be added to the default project in your `angular.json` file.
9
+
10
+ ## Build
11
+
12
+ Run `ng build my-lib` to build the project. The build artifacts will be stored in the `dist/` directory.
13
+
14
+ ## Publishing
15
+
16
+ After building your library with `ng build my-lib`, go to the dist folder `cd dist/my-lib` and run `npm publish`.
17
+
18
+ ## Running unit tests
19
+
20
+ Run `ng test my-lib` to execute the unit tests via [Karma](https://karma-runner.github.io).
21
+
22
+ ## Further help
23
+
24
+ To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
@@ -1,8 +1,5 @@
1
- /* */
2
- /* */
3
- /* */
4
- import { Helpers } from './index';
5
1
  import { HelpersIsomorphic } from './helpers-isomorphic';
2
+ import { Helpers } from './index';
6
3
  const KEY = {
7
4
  LAST_ERROR: Symbol(),
8
5
  LAST_INFO: Symbol(),
@@ -548,4 +545,4 @@ export class HelpersMessages extends HelpersIsomorphic {
548
545
  }
549
546
  ;
550
547
  ({}); // @--end-of-file-for-module=tnp-core lib/helpers-messages.ts
551
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy1tZXNzYWdlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1kaXN0L3RucC1jb3JlL3Byb2plY3RzL3RucC1jb3JlL3NyYy9saWIvaGVscGVycy1tZXNzYWdlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFLTCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBTXpELE1BQU0sR0FBRyxHQUFHO0lBQ1YsVUFBVSxFQUFFLE1BQU0sRUFBRTtJQUNwQixTQUFTLEVBQUUsTUFBTSxFQUFFO0lBQ25CLFNBQVMsRUFBRSxNQUFNLEVBQUU7SUFDbkIsUUFBUSxFQUFFLE1BQU0sRUFBRTtJQUNsQixZQUFZLEVBQUUsTUFBTSxFQUFFO0lBQ3RCLGlCQUFpQixFQUFFLE1BQU0sRUFBRTtJQUMzQixjQUFjLEVBQUUsTUFBTSxFQUFFO0NBQ3pCLENBQUM7QUFFRixNQUFNLFNBQVMsR0FBRztJQUNoQixVQUFVLEVBQUUsTUFBTSxFQUFFO0lBQ3BCLFNBQVMsRUFBRSxNQUFNLEVBQUU7SUFDbkIsU0FBUyxFQUFFLE1BQU0sRUFBRTtJQUNuQixRQUFRLEVBQUUsTUFBTSxFQUFFO0lBQ2xCLFlBQVksRUFBRSxNQUFNLEVBQUU7SUFDdEIsaUJBQWlCLEVBQUUsTUFBTSxFQUFFO0lBQzNCLGNBQWMsRUFBRSxNQUFNLEVBQUU7Q0FDekIsQ0FBQztBQUVGLE1BQU0sZUFBZSxHQUFHO0lBQ3RCLFVBQVUsRUFBRSxNQUFNLEVBQUU7SUFDcEIsU0FBUyxFQUFFLE1BQU0sRUFBRTtJQUNuQixTQUFTLEVBQUUsTUFBTSxFQUFFO0lBQ25CLFFBQVEsRUFBRSxNQUFNLEVBQUU7SUFDbEIsWUFBWSxFQUFFLE1BQU0sRUFBRTtJQUN0QixpQkFBaUIsRUFBRSxNQUFNLEVB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S0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztJQUVILENBQUM7SUFJRCxJQUFJLENBQUMsT0FBZSxFQUFFLFVBQVUsR0FBRyxLQUFLO1FBQzFDLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUVELElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3RCLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEIsT0FBTztRQUNULENBQUM7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO0lBRUgsQ0FBQztJQUlELE9BQU8sQ0FBQyxPQUFxQjtRQUMzQixJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN0QixPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3RCLE9BQU87UUFDVCxDQUFDO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztJQUVILENBQUM7SUFHRDs7Ozs7T0FLRztJQUNILFdBQVcsQ0FBQyxPQUFxQixFQUFFLFlBQXFCLEtBQUs7UUFDM0QsSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDdEIsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN0QixPQUFPO1FBQ1QsQ0FBQztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO0lBRUgsQ0FBQztJQUdELFFBQVEsQ0FBQyxPQUFzQixFQUFFLGVBQWUsR0FBRyxLQUFLO1FBQ3RELElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3RCLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEIsT0FBTztRQUNULENBQUM7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO0lBRUgsQ0FBQztJQUdELElBQUksYUFBYTtRQUVmLE9BQU8sSUFBSSxDQUFDLENBQUMsZ0NBQWdDO1FBRWpELEtBQUs7UUFDTCxLQUFLO0lBRUgsQ0FBQztJQUdEOztPQUVHO0lBQ0gsR0FBRyxDQUFDLE9BQVksRUFBRSxVQUFVLEdBQUcsQ0FBQztRQUM5QixJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN0QixPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3JCLE9BQU87UUFDVCxDQUFDO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7SUFFSCxDQUFDO0lBR0Q7O09BRUc7SUFDSCxVQUFVLENBQUMsT0FBcUI7UUFDbEMsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxPQUFPLENBQUMsT0FBZSxFQUFFLFVBQVUsR0FBRyxLQUFLO1FBQzdDLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsUUFBUSxDQUFDLE9BQVksRUFBRSxNQUFNLEdBQUcsS0FBSyxFQUFFLE9BQU8sR0FBRyxLQUFLO1FBQ3hELEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUdEOztPQUVHO0lBQ0gsT0FBTyxDQUFDLE9BQWUsRUFBRSxLQUFLLEdBQUcsS0FBSztRQUN4QyxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFHRCxJQUFJLENBQUMsT0FBZSxFQUFFLEtBQUssR0FBRyxLQUFLO1FBQ2pDLElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3RCLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEIsT0FBTztRQUNULENBQUM7UUFFTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO0lBRUgsQ0FBQztDQUVGO0FBRUEsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyw2REFBNkQiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuLyogKi9cbi8qICovXG4vKiAqL1xuICBcbmltcG9ydCB7IF8gfSBmcm9tICcuL2NvcmUtaW1wb3J0cyc7XG5cblxuaW1wb3J0IHsgSGVscGVycyB9IGZyb20gJy4vaW5kZXgnO1xuaW1wb3J0IHsgSGVscGVyc0lzb21vcnBoaWMgfSBmcm9tICcuL2hlbHBlcnMtaXNvbW9ycGhpYyc7XG5pbXBvcnQgeyBQUk9HUkVTU19EQVRBIH0gZnJvbSAnLi9wcm9ncmVzcy1kYXRhJztcbmltcG9ydCB7IGZyYW1ld29ya05hbWUgfSBmcm9tICcuL2ZyYW1ld29yay1uYW1lJztcblxuXG5cbmNvbnN0IEtFWSA9IHtcbiAgTEFTVF9FUlJPUjogU3ltYm9sKCksXG4gIExBU1RfSU5GTzogU3ltYm9sKCksXG4gIExBU1RfV0FSTjogU3ltYm9sKCksXG4gIExBU1RfTE9HOiBTeW1ib2woKSxcbiAgTEFTVF9TVUNDRVNTOiBTeW1ib2woKSxcbiAgTEFTVF9UQVNLX1NUQVJURUQ6IFN5bWJvbCgpLFxuICBMQVNUX1RBU0tfRE9ORTogU3ltYm9sKCksXG59O1xuXG5jb25zdCBLRVlfQ09VTlQgPSB7XG4gIExBU1RfRVJST1I6IFN5bWJvbCgpLFxuICBMQVNUX0lORk86IFN5bWJvbCgpLFxuICBMQVNUX1dBUk46IFN5bWJvbCgpLFxuICBMQVNUX0xPRzogU3ltYm9sKCksXG4gIExBU1RfU1VDQ0VTUzogU3ltYm9sKCksXG4gIExBU1RfVEFTS19TVEFSVEVEOiBTeW1ib2woKSxcbiAgTEFTVF9UQVNLX0RPTkU6IFN5bWJvbCgpLFxufTtcblxuY29uc3QgS0VZX0lNUE9SVEFOVENFID0ge1xuICBMQVNUX0VSUk9SOiBTeW1ib2woKSxcbiAgTEFTVF9JTkZPOiBTeW1ib2woKSxcbiAgTEFTVF9XQVJOOiBTeW1ib2woKSxcbiAgTEFTVF9MT0c6IFN5bWJvbCgpLFxuICBMQVNUX1NVQ0NFU1M6IFN5bWJvbCgpLFxuICBMQVNUX1RBU0tfU1RBUlRFRDogU3ltYm9sKCksXG4gIExBU1RfVEFTS19ET05FOiBTeW1ib2woKSxcbn07XG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cbmNvbnN0IExJTUlUID0gMTA7XG5cblxuLyoqXG4gKiBAcGFyYW0gZGV0YWlscyBhbnkgZGF0YSB0byBiZSB0cmFuc2Zvcm1lZFxuICogQHJldHVybnMgc3RyaW5nIHJlYWR5IHRvIGJlIGRpc3BsYXllZFxuICovXG5jb25zdCB0cmFuc2Zvcm1EYXRhID0gKGRldGFpbHM6IGFueSk6IHN0cmluZyA9PiB7XG4gIGlmICh0eXBlb2YgZGV0YWlscyA9PT0gJ29iamVjdCcpIHtcblxuXG5cbiAgICB0cnkge1xuICAgICAgY29uc3QganNvbiA9IEpTT04uc3RyaW5naWZ5KGRldGFpbHMsIG51bGwsIDIpO1xuICAgICAgZGV0YWlscyA9IGpzb247XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiBkZXRhaWxzO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZGV0YWlscztcbn07XG5cblxuZXhwb3J0IGNsYXNzIEhlbHBlcnNNZXNzYWdlcyBleHRlbmRzIEhlbHBlcnNJc29tb3JwaGljIHtcbiAgbXNnQ2FjaGVDbGVhcigpIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcbiAgfVxuXG4gIHJlbmRlckVycm9yKGVycjogRXJyb3IpIHtcbiAgICBpZiAodGhpcy5pc0Jyb3dzZXIpIHtcblxuICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgIH0gZWxzZSB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiB0aHJvdyBlcnJvclxuICAgKi9cbiAgdGhyb3coZGV0YWlsczogc3RyaW5nKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGRldGFpbHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIHRocm93IGVycm9yIGFuZCBzdG9wIGFwcGxpY2F0aW9uXG4gICAqIEBwYXJhbSBkZXRhaWxzXG4gICAqL1xuICBzdG9wQXBwbGljYXRpb24oZGV0YWlsczogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuaXNCcm93c2VyKSB7XG5cbiAgICAgIGRvY3VtZW50LmJvZHkuaW5uZXJIVE1MID1cbiAgICAgICAgJzxoMT5BcHBsaWNhdGlvbiBoYXMgZW5jb3VudGVyZWQgYW4gZXJyb3IgYW5kIHN0b3BwZWQuPC9oMT4nO1xuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ25vbmUnO1xuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKGRldGFpbHMpO1xuICB9XG5cbiAgdHJ5Q2F0Y2hFcnJvcihlcnJvcjogYW55KSB7XG4gICAgSGVscGVycy5lcnJvcihlcnJvciwgdHJ1ZSwgdHJ1ZSk7XG4gIH1cblxuICBlcnJvcihkZXRhaWxzOiBhbnksIG5vRXhpdCA9IGZhbHNlLCBub1RyYWNlID0gZmFsc2UpIHtcblxuICAgIGlmIChIZWxwZXJzLmlzQnJvd3Nlcikge1xuICAgICAgY29uc29sZS5lcnJvcihkZXRhaWxzKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuICB9XG5cblxuXG4gIGluZm8oZGV0YWlsczogc3RyaW5nLCByZXBlYXRhYmxlID0gZmFsc2UpIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG4gICAgaWYgKEhlbHBlcnMuaXNCcm93c2VyKSB7XG4gICAgICBjb25zb2xlLmluZm8oZGV0YWlscyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG4gIH1cblxuXG5cbiAgc3VjY2VzcyhkZXRhaWxzOiBhbnkgfCBzdHJpbmcpIHtcbiAgICBpZiAoSGVscGVycy5pc0Jyb3dzZXIpIHtcbiAgICAgIGNvbnNvbGUuaW5mbyhkZXRhaWxzKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcbiAgfVxuXG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBkZXRhaWxzXG4gICAqIEBwYXJhbSBpc0xvZ1Rhc2sgaXMgbGVzcyBpbXBvcnRhbnQgbG9nIHRhc2tcbiAgICogQHJldHVybnNcbiAgICovXG4gIHRhc2tTdGFydGVkKGRldGFpbHM6IGFueSB8IHN0cmluZywgaXNMb2dUYXNrOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICBpZiAoSGVscGVycy5pc0Jyb3dzZXIpIHtcbiAgICAgIGNvbnNvbGUuaW5mbyhkZXRhaWxzKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG4gIH1cblxuXG4gIHRhc2tEb25lKGRldGFpbHM/OiBhbnkgfCBzdHJpbmcsIGlzTGVzc0ltcG9ydGFudCA9IGZhbHNlKSB7XG4gICAgaWYgKEhlbHBlcnMuaXNCcm93c2VyKSB7XG4gICAgICBjb25zb2xlLmluZm8oZGV0YWlscyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG4gIH1cblxuXG4gIGdldCBpc1ZlcmJvc2VNb2RlKCkge1xuXG4gICAgcmV0dXJuIHRydWU7IC8vIFRPRE8gd2hhdCBpdCBtZWFucyBpbiBicm93c2VyXG5cbi8qICovXG4vKiAqL1xuICBcbiAgfVxuXG5cbiAgLyoqXG4gICAqIGxvZyBtZXNzYWdlcyBvbmx5IGF2YWlsYWJsZSBpbiB2ZXJib3NlIG1vZGVcbiAgICovXG4gIGxvZyhkZXRhaWxzOiBhbnksIGRlYnVnTGV2ZWwgPSAwKSB7XG4gICAgaWYgKEhlbHBlcnMuaXNCcm93c2VyKSB7XG4gICAgICBjb25zb2xlLmxvZyhkZXRhaWxzKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG4gIH1cblxuXG4gIC8qKlxuICAgKiBMb2dzIG5vdCB2aXNpYmxlIGluIG5vcm1hbCB1c2Ugb2YgdGFvbi1jbGlcbiAgICovXG4gIGxvZ1N1Y2Nlc3MoZGV0YWlsczogYW55IHwgc3RyaW5nKSB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuICAvKipcbiAgICogTG9ncyBub3QgdmlzaWJsZSBpbiBub3JtYWwgdXNlIG9mIHRhb24tY2xpXG4gICAqL1xuICBsb2dJbmZvKGRldGFpbHM6IHN0cmluZywgcmVwZWF0YWJsZSA9IGZhbHNlKSB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuICAvKipcbiAgICogTG9ncyBub3QgdmlzaWJsZSBpbiBub3JtYWwgdXNlIG9mIHRhb24tY2xpXG4gICAqL1xuICBsb2dFcnJvcihkZXRhaWxzOiBhbnksIG5vRXhpdCA9IGZhbHNlLCBub1RyYWNlID0gZmFsc2UpIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIExvZ3Mgbm90IHZpc2libGUgaW4gbm9ybWFsIHVzZSBvZiB0YW9uLWNsaVxuICAgKi9cbiAgbG9nV2FybihkZXRhaWxzOiBzdHJpbmcsIHRyYWNlID0gZmFsc2UpIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cbiAgd2FybihkZXRhaWxzOiBzdHJpbmcsIHRyYWNlID0gZmFsc2UpIHtcbiAgICBpZiAoSGVscGVycy5pc0Jyb3dzZXIpIHtcbiAgICAgIGNvbnNvbGUud2FybihkZXRhaWxzKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuICB9XG5cbn1cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPXRucC1jb3JlIGxpYi9oZWxwZXJzLW1lc3NhZ2VzLnRzIl19
548
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy1tZXNzYWdlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1kaXN0L3RucC1jb3JlL3Byb2plY3RzL3RucC1jb3JlL3NyYy9saWIvaGVscGVycy1tZXNzYWdlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUd6RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBSWxDLE1BQU0sR0FBRyxHQUFHO0lBQ1YsVUFBVSxFQUFFLE1BQU0sRUFBRTtJQUNwQixTQUFTLEVBQUUsTUFBTSxFQUFFO0lBQ25CLFNBQVMsRUFBRSxNQUFNLEVBQUU7SUFDbkIsUUFBUSxFQUFFLE1BQU0sRUFBRTtJQUNsQixZQUFZLEVBQUUsTUFBTSxFQUFFO0lBQ3RCLGlCQUFpQixFQUFFLE1BQU0sRUFBRTtJQUMzQixjQUFjLEVBQUUsTUFBTSxFQUFFO0NBQ3pCLENBQUM7QUFFRixNQUFNLFNBQVMsR0FBRztJQUNoQixVQUFVLEVBQUUsTUFBTSxFQUFFO0lBQ3BCLFNBQVMsRUFBRSxNQUFNLEVBQUU7SUFDbkIsU0FBUyxFQUFFLE1BQU0sRUFBRTtJQUNuQixRQUFRLEVBQUUsTUFBTSxFQUFFO0lBQ2xCLFlBQVksRUFBRSxNQUFNLEVBQUU7SUFDdEIsaUJBQWlCLEVBQUUsTUFBTSxFQUFFO0lBQzNCLGNBQWMsRUFBRSxNQUFNLEVBQUU7Q0FDekIsQ0FBQztBQUVGLE1BQU0sZUFBZSxHQUFHO0lBQ3RCLFVBQVUsRUFBRSxNQUFNLEVBQUU7SUFDcEIsU0FBUyxFQUFFLE1BQU0sRUFBRTtJQUNuQixTQUFTLEVBQUUsTUFBTSxFQUFFO0lBQ25CLFFBQVEsRUFBRSxNQUFNLEVBQUU7SUFDbEIsWUFBWSxFQUFFLE1BQU0sRUFBRTtJQUN0QixpQkFBaUIsRUFBRSxNQUFNLEVBQUU7SUFDM0IsY0FBYyxFQUFFLE1BQU0sRUFBRTtD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S0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztJQUVILENBQUM7SUFJRCxJQUFJLENBQUMsT0FBZSxFQUFFLFVBQVUsR0FBRyxLQUFLO1FBQzFDLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUVELElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3RCLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEIsT0FBTztRQUNULENBQUM7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO0lBRUgsQ0FBQztJQUlELE9BQU8sQ0FBQyxPQUFxQjtRQUMzQixJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN0QixPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3RCLE9BQU87UUFDVCxDQUFDO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztJQUVILENBQUM7SUFHRDs7Ozs7T0FLRztJQUNILFdBQVcsQ0FBQyxPQUFxQixFQUFFLFlBQXFCLEtBQUs7UUFDM0QsSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDdEIsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN0QixPQUFPO1FBQ1QsQ0FBQztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO0lBRUgsQ0FBQztJQUdELFFBQVEsQ0FBQyxPQUFzQixFQUFFLGVBQWUsR0FBRyxLQUFLO1FBQ3RELElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3RCLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEIsT0FBTztRQUNULENBQUM7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO0lBRUgsQ0FBQztJQUdELElBQUksYUFBYTtRQUVmLE9BQU8sSUFBSSxDQUFDLENBQUMsZ0NBQWdDO1FBRWpELEtBQUs7UUFDTCxLQUFLO0lBRUgsQ0FBQztJQUdEOztPQUVHO0lBQ0gsR0FBRyxDQUFDLE9BQVksRUFBRSxVQUFVLEdBQUcsQ0FBQztRQUM5QixJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN0QixPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3JCLE9BQU87UUFDVCxDQUFDO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7SUFFSCxDQUFDO0lBR0Q7O09BRUc7SUFDSCxVQUFVLENBQUMsT0FBcUI7UUFDbEMsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxPQUFPLENBQUMsT0FBZSxFQUFFLFVBQVUsR0FBRyxLQUFLO1FBQzdDLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsUUFBUSxDQUFDLE9BQVksRUFBRSxNQUFNLEdBQUcsS0FBSyxFQUFFLE9BQU8sR0FBRyxLQUFLO1FBQ3hELEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUdEOztPQUVHO0lBQ0gsT0FBTyxDQUFDLE9BQWUsRUFBRSxLQUFLLEdBQUcsS0FBSztRQUN4QyxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFHRCxJQUFJLENBQUMsT0FBZSxFQUFFLEtBQUssR0FBRyxLQUFLO1FBQ2pDLElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3RCLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEIsT0FBTztRQUNULENBQUM7UUFFTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO0lBRUgsQ0FBQztDQUVGO0FBRUEsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyw2REFBNkQiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuXG5kZWNsYXJlIGNvbnN0IGdsb2JhbDogYW55O1xuaW1wb3J0IHsgY2hhbGssIGRhdGVmb3JtYXQgfSBmcm9tICcuL2NvcmUtaW1wb3J0cyc7XG5pbXBvcnQgeyBfIH0gZnJvbSAnLi9jb3JlLWltcG9ydHMnO1xuaW1wb3J0IHsgZnJhbWV3b3JrTmFtZSB9IGZyb20gJy4vZnJhbWV3b3JrLW5hbWUnO1xuaW1wb3J0IHsgSGVscGVyc0lzb21vcnBoaWMgfSBmcm9tICcuL2hlbHBlcnMtaXNvbW9ycGhpYyc7XG5pbXBvcnQgeyBQUk9HUkVTU19EQVRBIH0gZnJvbSAnLi9wcm9ncmVzcy1kYXRhJztcblxuaW1wb3J0IHsgSGVscGVycyB9IGZyb20gJy4vaW5kZXgnO1xuXG5cblxuY29uc3QgS0VZID0ge1xuICBMQVNUX0VSUk9SOiBTeW1ib2woKSxcbiAgTEFTVF9JTkZPOiBTeW1ib2woKSxcbiAgTEFTVF9XQVJOOiBTeW1ib2woKSxcbiAgTEFTVF9MT0c6IFN5bWJvbCgpLFxuICBMQVNUX1NVQ0NFU1M6IFN5bWJvbCgpLFxuICBMQVNUX1RBU0tfU1RBUlRFRDogU3ltYm9sKCksXG4gIExBU1RfVEFTS19ET05FOiBTeW1ib2woKSxcbn07XG5cbmNvbnN0IEtFWV9DT1VOVCA9IHtcbiAgTEFTVF9FUlJPUjogU3ltYm9sKCksXG4gIExBU1RfSU5GTzogU3ltYm9sKCksXG4gIExBU1RfV0FSTjogU3ltYm9sKCksXG4gIExBU1RfTE9HOiBTeW1ib2woKSxcbiAgTEFTVF9TVUNDRVNTOiBTeW1ib2woKSxcbiAgTEFTVF9UQVNLX1NUQVJURUQ6IFN5bWJvbCgpLFxuICBMQVNUX1RBU0tfRE9ORTogU3ltYm9sKCksXG59O1xuXG5jb25zdCBLRVlfSU1QT1JUQU5UQ0UgPSB7XG4gIExBU1RfRVJST1I6IFN5bWJvbCgpLFxuICBMQVNUX0lORk86IFN5bWJvbCgpLFxuICBMQVNUX1dBUk46IFN5bWJvbCgpLFxuICBMQVNUX0xPRzogU3ltYm9sKCksXG4gIExBU1RfU1VDQ0VTUzogU3ltYm9sKCksXG4gIExBU1RfVEFTS19TVEFSVEVEOiBTeW1ib2woKSxcbiAgTEFTVF9UQVNLX0RPTkU6IFN5bWJvbCgpLFxufTtcblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuY29uc3QgTElNSVQgPSAxMDtcblxuXG4vKipcbiAqIEBwYXJhbSBkZXRhaWxzIGFueSBkYXRhIHRvIGJlIHRyYW5zZm9ybWVkXG4gKiBAcmV0dXJucyBzdHJpbmcgcmVhZHkgdG8gYmUgZGlzcGxheWVkXG4gKi9cbmNvbnN0IHRyYW5zZm9ybURhdGEgPSAoZGV0YWlsczogYW55KTogc3RyaW5nID0+IHtcbiAgaWYgKHR5cGVvZiBkZXRhaWxzID09PSAnb2JqZWN0Jykge1xuXG5cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBqc29uID0gSlNPTi5zdHJpbmdpZnkoZGV0YWlscywgbnVsbCwgMik7XG4gICAgICBkZXRhaWxzID0ganNvbjtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuIGRldGFpbHM7XG4gICAgfVxuICB9XG4gIHJldHVybiBkZXRhaWxzO1xufTtcblxuXG5leHBvcnQgY2xhc3MgSGVscGVyc01lc3NhZ2VzIGV4dGVuZHMgSGVscGVyc0lzb21vcnBoaWMge1xuICBtc2dDYWNoZUNsZWFyKCkge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuICB9XG5cbiAgcmVuZGVyRXJyb3IoZXJyOiBFcnJvcikge1xuICAgIGlmICh0aGlzLmlzQnJvd3Nlcikge1xuXG4gICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgfSBlbHNlIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIHRocm93IGVycm9yXG4gICAqL1xuICB0aHJvdyhkZXRhaWxzOiBzdHJpbmcpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoZGV0YWlscyk7XG4gIH1cblxuICAvKipcbiAgICogdGhyb3cgZXJyb3IgYW5kIHN0b3AgYXBwbGljYXRpb25cbiAgICogQHBhcmFtIGRldGFpbHNcbiAgICovXG4gIHN0b3BBcHBsaWNhdGlvbihkZXRhaWxzOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5pc0Jyb3dzZXIpIHtcblxuICAgICAgZG9jdW1lbnQuYm9keS5pbm5lckhUTUwgPVxuICAgICAgICAnPGgxPkFwcGxpY2F0aW9uIGhhcyBlbmNvdW50ZXJlZCBhbiBlcnJvciBhbmQgc3RvcHBlZC48L2gxPic7XG4gICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnbm9uZSc7XG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoZGV0YWlscyk7XG4gIH1cblxuICB0cnlDYXRjaEVycm9yKGVycm9yOiBhbnkpIHtcbiAgICBIZWxwZXJzLmVycm9yKGVycm9yLCB0cnVlLCB0cnVlKTtcbiAgfVxuXG4gIGVycm9yKGRldGFpbHM6IGFueSwgbm9FeGl0ID0gZmFsc2UsIG5vVHJhY2UgPSBmYWxzZSkge1xuXG4gICAgaWYgKEhlbHBlcnMuaXNCcm93c2VyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGRldGFpbHMpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG4gIH1cblxuXG5cbiAgaW5mbyhkZXRhaWxzOiBzdHJpbmcsIHJlcGVhdGFibGUgPSBmYWxzZSkge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcbiAgICBpZiAoSGVscGVycy5pc0Jyb3dzZXIpIHtcbiAgICAgIGNvbnNvbGUuaW5mbyhkZXRhaWxzKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcbiAgfVxuXG5cblxuICBzdWNjZXNzKGRldGFpbHM6IGFueSB8IHN0cmluZykge1xuICAgIGlmIChIZWxwZXJzLmlzQnJvd3Nlcikge1xuICAgICAgY29uc29sZS5pbmZvKGRldGFpbHMpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuICB9XG5cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGRldGFpbHNcbiAgICogQHBhcmFtIGlzTG9nVGFzayBpcyBsZXNzIGltcG9ydGFudCBsb2cgdGFza1xuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgdGFza1N0YXJ0ZWQoZGV0YWlsczogYW55IHwgc3RyaW5nLCBpc0xvZ1Rhc2s6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgIGlmIChIZWxwZXJzLmlzQnJvd3Nlcikge1xuICAgICAgY29uc29sZS5pbmZvKGRldGFpbHMpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcbiAgfVxuXG5cbiAgdGFza0RvbmUoZGV0YWlscz86IGFueSB8IHN0cmluZywgaXNMZXNzSW1wb3J0YW50ID0gZmFsc2UpIHtcbiAgICBpZiAoSGVscGVycy5pc0Jyb3dzZXIpIHtcbiAgICAgIGNvbnNvbGUuaW5mbyhkZXRhaWxzKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcbiAgfVxuXG5cbiAgZ2V0IGlzVmVyYm9zZU1vZGUoKSB7XG5cbiAgICByZXR1cm4gdHJ1ZTsgLy8gVE9ETyB3aGF0IGl0IG1lYW5zIGluIGJyb3dzZXJcblxuLyogKi9cbi8qICovXG4gIFxuICB9XG5cblxuICAvKipcbiAgICogbG9nIG1lc3NhZ2VzIG9ubHkgYXZhaWxhYmxlIGluIHZlcmJvc2UgbW9kZVxuICAgKi9cbiAgbG9nKGRldGFpbHM6IGFueSwgZGVidWdMZXZlbCA9IDApIHtcbiAgICBpZiAoSGVscGVycy5pc0Jyb3dzZXIpIHtcbiAgICAgIGNvbnNvbGUubG9nKGRldGFpbHMpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcbiAgfVxuXG5cbiAgLyoqXG4gICAqIExvZ3Mgbm90IHZpc2libGUgaW4gbm9ybWFsIHVzZSBvZiB0YW9uLWNsaVxuICAgKi9cbiAgbG9nU3VjY2VzcyhkZXRhaWxzOiBhbnkgfCBzdHJpbmcpIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2dzIG5vdCB2aXNpYmxlIGluIG5vcm1hbCB1c2Ugb2YgdGFvbi1jbGlcbiAgICovXG4gIGxvZ0luZm8oZGV0YWlsczogc3RyaW5nLCByZXBlYXRhYmxlID0gZmFsc2UpIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2dzIG5vdCB2aXNpYmxlIGluIG5vcm1hbCB1c2Ugb2YgdGFvbi1jbGlcbiAgICovXG4gIGxvZ0Vycm9yKGRldGFpbHM6IGFueSwgbm9FeGl0ID0gZmFsc2UsIG5vVHJhY2UgPSBmYWxzZSkge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuICAvKipcbiAgICogTG9ncyBub3QgdmlzaWJsZSBpbiBub3JtYWwgdXNlIG9mIHRhb24tY2xpXG4gICAqL1xuICBsb2dXYXJuKGRldGFpbHM6IHN0cmluZywgdHJhY2UgPSBmYWxzZSkge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuICB3YXJuKGRldGFpbHM6IHN0cmluZywgdHJhY2UgPSBmYWxzZSkge1xuICAgIGlmIChIZWxwZXJzLmlzQnJvd3Nlcikge1xuICAgICAgY29uc29sZS53YXJuKGRldGFpbHMpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG4gIH1cblxufVxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9dG5wLWNvcmUgbGliL2hlbHBlcnMtbWVzc2FnZXMudHMiXX0=
@@ -869,8 +869,6 @@ export var UtilsProcess;
869
869
  /* */
870
870
  /* */
871
871
  /* */
872
- /* */
873
- /* */
874
872
  return (void 0);
875
873
  };
876
874
  UtilsProcess.getGitBashPath = () => {
@@ -1000,6 +998,14 @@ export var UtilsProcess;
1000
998
  /* */
1001
999
  /* */
1002
1000
  /* */
1001
+ /* */
1002
+ /* */
1003
+ /* */
1004
+ /* */
1005
+ /* */
1006
+ /* */
1007
+ /* */
1008
+ /* */
1003
1009
  return (void 0);
1004
1010
  };
1005
1011
  UtilsProcess.getBashOrShellName = () => {
@@ -1937,4 +1943,4 @@ export var UtilsTerminal;
1937
1943
  })(UtilsTerminal || (UtilsTerminal = {}));
1938
1944
  ;
1939
1945
  ({}); // @--end-of-file-for-module=tnp-core lib/utils.ts
1940
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItZGlzdC90bnAtY29yZS9wcm9qZWN0cy90bnAtY29yZS9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFLOUIsT0FBTyxLQUF3QixNQUFNLE9BQU8sQ0FBQztBQUU3QyxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBZ0MsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHNUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUszQyxNQUFNLHVCQUF1QixHQUFHLEtBQUssQ0FBQztBQUd0QyxNQUFNLEtBQVcsS0FBSyxDQTZzQnJCO0FBN3NCRCxXQUFpQixLQUFLO0lBRVAsZUFBUyxHQUFHLENBQ3ZCLEtBQVksRUFDWixjQUF3QixFQUN4QixFQUFFO1FBQ0YsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2QsT0FBTyxLQUFLO2FBQ1QsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNoQixNQUFNLENBQUMsVUFBVSxJQUFJO1lBQ3BCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUN0RSxDQUFDLENBQUMsS0FBSztnQkFDUCxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ2xFLENBQUMsQ0FBUSxDQUFDO0lBQ2QsQ0FBQyxDQUFDO0lBSUY7OztP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S0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQyxDQUFDO0lBYUY7Ozs7T0FJRztJQUNVLCtDQUFrQyxHQUFHLEtBQUssRUFDckQsT0FBZSxFQUNmLE9BUUMsRUFDYyxFQUFFO1FBQ3JCLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDLENBQUM7SUFJVywyQkFBYyxHQUFHLEdBQUcsRUFBRTtRQUNyQyxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDLENBQUM7SUFJRjs7O09BR0c7SUFDVSxxQ0FBd0IsR0FBRyxDQUN0QyxPQUFlLEVBQ2YsT0FBeUQsRUFDekQsRUFBRTtRQUNOLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxL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S0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQyxDQUFDO0lBSUYsTUFBTSxnQkFBZ0IsR0FBRyxDQUN2QixPQUFZLEVBQ3VCLEVBQUU7UUFDekMsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQyxDQUFDO0lBSVcseUJBQVcsR0FBRyxLQUFLLEVBQWMsT0FZN0MsRUFBZ0IsRUFBRTtRQUNyQixLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQyxDQUFDO0lBSUY7OztPQUdHO0lBQ1UseUNBQTJCLEdBQUcsS0FBSyxFQUc5QyxPQUFlLEVBQ2YsT0FNQyxFQUNELEVBQUU7UUFDTixLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQyxDQUFDO0lBSUY7OztPQUdHO0lBQ1Usb0NBQXNCLEdBQUcsS0FBSyxFQUd6QyxPQUFlLEVBQ2YsT0FNQyxFQUNELEVBQUU7UUFDTixLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUMsQ0FBQztJQUlXLG9CQUFNLEdBQUcsS0FBSyxFQUFjLE9BUXhDLEVBQWMsRUFBRTtRQUNuQixLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDLENBQUM7SUFLVyw4QkFBZ0IsR0FBRyxHQUFTLEVBQUU7UUFDN0MsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDLENBQUM7SUFJVyxtQkFBSyxHQUFHLEtBQUssRUFBRSxFQUMxQixZQUFZLEVBQ1osUUFBUSxFQUNSLFFBQVEsRUFBRSx3Q0FBd0M7TUFNbkQsRUFBbUIsRUFBRTtRQUN4QixLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQyxDQUFDO0lBSVcscUJBQU8sR0FBRyxLQUFLLEVBQUUsT0FZN0IsRUFBRSxFQUFFO1FBQ1AsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUMsQ0FBQztJQUlXLHdDQUEwQixHQUFHLENBQUMsT0FFMUMsRUFBaUIsRUFBRTtRQUN0QixLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDLENBQUM7SUFJRjs7T0FFRztJQUNVLHlCQUFXLEdBQUcsQ0FBQyxPQUE4QixFQUFFLEVBQUU7UUFDaEUsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQyxDQUFDO0lBSVcsNkJBQWUsR0FBRyxLQUFLLEVBQ2xDLElBQXVCLEVBQ3ZCLFFBQVEsR0FBRyxNQUFNLEVBQ0YsRUFBRTtRQUNyQixLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUMsQ0FBQztJQUlGOzs7Ozs7T0FNRztJQUNVLHVDQUF5QixHQUFHLENBQ3ZDLElBQXVCLEVBQ1IsRUFBRTtRQUNyQixLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDLENBQUM7QUFFSixDQUFDLEVBOW1CZ0IsYUFBYSxLQUFiLGFBQWEsUUE4bUI3QjtBQUdBLENBQUM7QUFBQSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsa0RBQWtEIiwic291cmNlc0NvbnRlbnQiOlsiXG5cblxuaW1wb3J0IHsgQmxvYiB9IGZyb20gJ2J1ZmZlcic7XG5pbXBvcnQgeyBDaGlsZFByb2Nlc3MgfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCAqIGFzIG5ldCBmcm9tICduZXQnO1xuaW1wb3J0IHsgcHJvbWlzaWZ5IH0gZnJvbSAndXRpbCc7XG5cbmltcG9ydCBheGlvcywgeyBBeGlvc1Jlc3BvbnNlIH0gZnJvbSAnYXhpb3MnO1xuXG5pbXBvcnQgeyBwYXRoLCBfLCBjcm9zc1BsYXRmb3JtUGF0aCwgb3MsIGNoYWxrIH0gZnJvbSAnLi9jb3JlLWltcG9ydHMnO1xuaW1wb3J0IHsgZGF0ZWZvcm1hdCB9IGZyb20gJy4vY29yZS1pbXBvcnRzJztcbmltcG9ydCB7IHNwYXduLCBjaGlsZF9wcm9jZXNzIH0gZnJvbSAnLi9jb3JlLWltcG9ydHMnO1xuaW1wb3J0IHsgZnNlIH0gZnJvbSAnLi9jb3JlLWltcG9ydHMnO1xuaW1wb3J0IHsgQ29yZU1vZGVscyB9IGZyb20gJy4vY29yZS1tb2RlbHMnO1xuXG5pbXBvcnQgeyBIZWxwZXJzIH0gZnJvbSAnLi9pbmRleCc7XG5cblxuY29uc3QgQkxPQl9TVVBQT1JURURfSU5fU1FMSlMgPSBmYWxzZTtcblxuXG5leHBvcnQgbmFtZXNwYWNlIFV0aWxzIHtcblxuICBleHBvcnQgY29uc3QgdW5pcUFycmF5ID0gPFQgPSBhbnk+KFxuICAgIGFycmF5OiBhbnlbXSxcbiAgICB1bmlxdWVQcm9wZXJ0eT86IGtleW9mIFQsXG4gICkgPT4ge1xuICAgIHZhciBzZWVuID0ge307XG4gICAgcmV0dXJuIGFycmF5XG4gICAgICAuZmlsdGVyKGYgPT4gISFmKVxuICAgICAgLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICByZXR1cm4gc2Vlbi5oYXNPd25Qcm9wZXJ0eSh1bmlxdWVQcm9wZXJ0eSA/IGl0ZW1bdW5pcXVlUHJvcGVydHldIDogaXRlbSlcbiAgICAgICAgICA/IGZhbHNlXG4gICAgICAgICAgOiAoc2Vlblt1bmlxdWVQcm9wZXJ0eSA/IGl0ZW1bdW5pcXVlUHJvcGVydHldIDogaXRlbV0gPSB0cnVlKTtcbiAgICAgIH0pIGFzIFRbXTtcbiAgfTtcblxuXG5cbiAgLyoqXG4gICAqIEBwYXJhbSBhbnlPYmplY3RcbiAgICogQHJldHVybnMgb2JqZWN0IHdpdGggc29ydGVkIGtleXNcbiAgICovXG4gIGV4cG9ydCBjb25zdCBzb3J0S2V5cyA9IChhbnlPYmplY3Q6IGFueSk6IGFueSA9PiB7XG4gICAgaWYgKF8uaXNBcnJheShhbnlPYmplY3QpKSB7XG4gICAgICByZXR1cm4gYW55T2JqZWN0Lm1hcChzb3J0S2V5cyk7XG4gICAgfVxuICAgIGlmIChfLmlzT2JqZWN0KGFueU9iamVjdCkpIHtcbiAgICAgIHJldHVybiBfLmZyb21QYWlycyhcbiAgICAgICAgXy5rZXlzKGFueU9iamVjdClcbiAgICAgICAgICAuc29ydCgpXG4gICAgICAgICAgLm1hcChrZXkgPT4gW2tleSwgc29ydEtleXMoYW55T2JqZWN0W2tleV0pXSksXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gYW55T2JqZWN0O1xuICB9O1xuXG5cblxuICAvKipcbiAgICogRXhhbXBsZTpcbiAgICogbmV3IFJlZ0V4cChlc2NhcGVTdHJpbmdGb3JSZWdFeCgnYS5iLmMnKSwnZycpID0+IC9hXFwuYlxcLmMvZ1xuICAgKi9cbiAgZXhwb3J0IGNvbnN0IGVzY2FwZVN0cmluZ0ZvclJlZ0V4ID0gKHN0cmluZ0ZvclJlZ0V4cDogc3RyaW5nKSA9PiB7XG4gICAgcmV0dXJuIHN0cmluZ0ZvclJlZ0V4cC5yZXBsYWNlKC9bLVxcL1xcXFxeJCorPy4oKXxbXFxde31dL2csICdcXFxcJCYnKTtcbiAgfTtcblxuXG5cbiAgZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUNoYWxrU3BlY2lhbENoYXJzKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcblxuICAgIGNvbnN0IGFuc2lSZWdleCA9IC9cXHUwMDFiXFxbWzAtOTtdKm0vZztcblxuXG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKGFuc2lSZWdleCwgJycpO1xuICB9XG5cblxuXG4gIGV4cG9ydCBjb25zdCBmdWxsRGF0ZVRpbWUgPSAoKSA9PiB7XG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cblxuXG4gIGV4cG9ydCBjb25zdCBmdWxsRGF0ZSA9ICgpID0+IHtcbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgY29uc3QgdGFrZW5Qb3J0cyA9IFtdO1xuICBleHBvcnQgY29uc3QgZ2V0RnJlZVBvcnQgPSBhc3luYyAob3B0aW9ucz86IHtcbiAgICBzdGFydEZyb20/OiBudW1iZXI7XG4gIH0pOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgLyoqXG4gICAqIFRyYXZlcnNlcyB0aGUgY2FjaGUgdG8gc2VhcmNoIGZvciBhbGwgdGhlIGNhY2hlZFxuICAgKiBmaWxlcyBvZiB0aGUgc3BlY2lmaWVkIG1vZHVsZSBuYW1lXG4gICAqL1xuICBjb25zdCBzZWFyY2hDYWNoZSA9IChtb2R1bGVOYW1lLCBjYWxsYmFjaykgPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGEgbW9kdWxlIGZyb20gdGhlIGNhY2hlXG4gICAqL1xuICBjb25zdCBwdXJnZUNhY2hlID0gbW9kdWxlTmFtZSA9PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cbiAgZXhwb3J0IGNvbnN0IHJlcXVpcmVVbmNhY2hlZCA9IChtb2R1bGU6IHN0cmluZykgPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cblxuXG5cbiAgLyoqXG4gICAqIHNpbWlsYXIgdG8gY2FtZWxDYXNlIGJ1dCByZW1vdmVcbiAgICogYWxsIG5vbiB3b3JkIC8gcmVwZWF0ZWQgY2hhcmFjdGVyc1xuICAgKi9cbiAgZXhwb3J0IGNvbnN0IGNhbWVsaXplID0gKHN0cjogc3RyaW5nID0gJycpID0+IHtcbiAgICBzdHIgPSBzdHIucmVwbGFjZSgvXFxXL2csICcnKS50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiBzdHJcbiAgICAgIC5yZXBsYWNlKC8oPzpeXFx3fFtBLVpdfFxcYlxcdykvZywgZnVuY3Rpb24gKHdvcmQsIGluZGV4KSB7XG4gICAgICAgIHJldHVybiBpbmRleCA9PSAwID8gd29yZC50b0xvd2VyQ2FzZSgpIDogd29yZC50b1VwcGVyQ2FzZSgpO1xuICAgICAgfSlcbiAgICAgIC5yZXBsYWNlKC9cXHMrL2csICcnKTtcbiAgfTtcblxuXG5cbiAgaW50ZXJmYWNlIEF0dHJKc29uY1Byb3Age1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB2YWx1ZT86IGFueTtcbiAgfVxuICBleHBvcnQgbmFtZXNwYWNlIGpzb24ge1xuICAgIGV4cG9ydCBjb25zdCBnZXRBdHJyaWJ1dGllcyA9IChcbiAgICAgIGpzb25EZWVwUGF0aDogc3RyaW5nLCAvLyBsb2Rhc2ggcGF0aCB0byBwcm9wZXJ0eSBpbiBqc29uIGV4LiBkZWVwLnBhdGgudG8ucHJvcFxuICAgICAgZmlsZUNvbnRlbnQ6IHN0cmluZywgLy8ganNvbmMgb3IganNvbjUgLSBqc29uIHdpdGggY29tbWVudHNcbiAgICApOiBBdHRySnNvbmNQcm9wW10gPT4ge1xuICAgICAgY29uc3QgbGluZXMgPSBmaWxlQ29udGVudC5zcGxpdCgnXFxuJyk7XG5cbiAgICAgIGNvbnN0IHBhdGhQYXJ0cyA9IGpzb25EZWVwUGF0aC5zcGxpdCgnLicpLnJlZHVjZSgoYSwgYikgPT4ge1xuICAgICAgICBpZiAoYS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICByZXR1cm4gW2JdO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxhc3Q6IHN0cmluZyA9IGFbYS5sZW5ndGggLSAxXTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIChsYXN0LnN0YXJ0c1dpdGgoYFsnYCkgJiYgYi5lbmRzV2l0aChgJ11gKSkgfHxcbiAgICAgICAgICAobGFzdC5zdGFydHNXaXRoKGBbXCJgKSAmJiBiLmVuZHNXaXRoKGBcIl1gKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgYVthLmxlbmd0aCAtIDFdID0gW2xhc3QsIGJdLmpvaW4oJy4nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhLnB1c2goYik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGE7XG4gICAgICB9LCBbXSk7XG5cblxuICAgICAgY29uc3Qga2V5TmFtZSA9IHBhdGhQYXJ0cy5wb3AoKSEucmVwbGFjZSgvXlxcW1wiKC4rKVwiXFxdJC8sICckMScpO1xuICAgICAgbGV0IGN1cnJlbnRQYXRoID0gJyc7XG4gICAgICBsZXQgYXR0cmlidXRlczogQXR0ckpzb25jUHJvcFtdID0gW107XG4gICAgICBsZXQgY29sbGVjdGVkQ29tbWVudHM6IHN0cmluZ1tdID0gW107XG5cbiAgICAgIGZvciAoY29uc3QgbGluZSBvZiBsaW5lcykge1xuICAgICAgICBjb25zdCB0cmltbWVkTGluZSA9IGxpbmUudHJpbSgpO1xuXG4gICAgICAgIGlmICh0cmltbWVkTGluZS5zdGFydHNXaXRoKCcvLycpKSB7XG5cbiAgICAgICAgICBjb2xsZWN0ZWRDb21tZW50cy5wdXNoKHRyaW1tZWRMaW5lKTtcblxuXG4gICAgICAgIH0gZWxzZSBpZiAodHJpbW1lZExpbmUuc3RhcnRzV2l0aCgnXCInKSB8fCB0cmltbWVkTGluZS5zdGFydHNXaXRoKFwiJ1wiKSkge1xuXG4gICAgICAgICAgY29uc3QgbWF0Y2ggPSB0cmltbWVkTGluZS5tYXRjaCgvW1wiJ10oW15cIiddKylbXCInXVxccyo6Lyk7XG5cbiAgICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IG1hdGNoWzFdO1xuICAgICAgICAgICAgY3VycmVudFBhdGggPSBjdXJyZW50UGF0aFxuICAgICAgICAgICAgICA/IGAke2N1cnJlbnRQYXRofS4ke2tleS5pbmNsdWRlcygnLicpID8gYFsnJHtrZXl9J11gIDoga2V5fWBcbiAgICAgICAgICAgICAgOiBrZXk7XG5cblxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAoY3VycmVudFBhdGguZW5kc1dpdGgoa2V5TmFtZSkgJiZcbiAgICAgICAgICAgICAgICAhY3VycmVudFBhdGguZW5kc1dpdGgoJy8nICsga2V5TmFtZSkpIHx8XG4gICAgICAgICAgICAgIGN1cnJlbnRQYXRoLmVuZHNXaXRoKGBbJyR7a2V5TmFtZX0nXWApXG4gICAgICAgICAgICApIHtcblxuXG5cblxuXG4gICAgICAgICAgICAgIGF0dHJpYnV0ZXMgPSBleHRyYWN0QXR0cmlidXRlc0Zyb21Db21tZW50cyhjb2xsZWN0ZWRDb21tZW50cyk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG5cbiAgICAgICAgICAgIGNvbGxlY3RlZENvbW1lbnRzID0gW107XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhdHRyaWJ1dGVzO1xuICAgIH07XG5cbiAgICBjb25zdCBleHRyYWN0QXR0cmlidXRlc0Zyb21Db21tZW50cyA9IChcbiAgICAgIGNvbW1lbnRzOiBzdHJpbmdbXSxcbiAgICApOiBBdHRySnNvbmNQcm9wW10gPT4ge1xuICAgICAgY29uc3QgYXR0cmlidXRlczogQXR0ckpzb25jUHJvcFtdID0gW107XG4gICAgICBjb25zdCBhdHRyUmVnZXggPSAvQChcXHcrKSg/Olxccyo9XFxzKihbXlxcc0BdKykpPy9nO1xuXG4gICAgICBmb3IgKGNvbnN0IGNvbW1lbnQgb2YgY29tbWVudHMpIHtcbiAgICAgICAgbGV0IG1hdGNoO1xuICAgICAgICB3aGlsZSAoKG1hdGNoID0gYXR0clJlZ2V4LmV4ZWMoY29tbWVudCkpICE9PSBudWxsKSB7XG4gICAgICAgICAgY29uc3QgWywgbmFtZSwgdmFsdWVdID0gbWF0Y2g7XG5cbiAgICAgICAgICBjb25zdCBleGlzdGluZ0F0dHJpYnV0ZSA9IGF0dHJpYnV0ZXMuZmluZChcbiAgICAgICAgICAgIGF0dHIgPT4gYXR0ci5uYW1lID09PSBgQCR7bmFtZX1gLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBpZiAoZXhpc3RpbmdBdHRyaWJ1dGUpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShleGlzdGluZ0F0dHJpYnV0ZS52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBleGlzdGluZ0F0dHJpYnV0ZS52YWx1ZS5wdXNoKHZhbHVlKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBleGlzdGluZ0F0dHJpYnV0ZS52YWx1ZSA9IFtleGlzdGluZ0F0dHJpYnV0ZS52YWx1ZSwgdmFsdWVdO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZXMucHVzaCh7XG4gICAgICAgICAgICAgIG5hbWU6IGBAJHtuYW1lfWAsXG4gICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSA/IHZhbHVlIDogdHJ1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG5cbiAgICAgIGF0dHJpYnV0ZXMuZm9yRWFjaChhdHRyID0+IHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYXR0ci52YWx1ZSkgJiYgYXR0ci52YWx1ZS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICBhdHRyLnZhbHVlID0gYXR0ci52YWx1ZVswXTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBhdHRyaWJ1dGVzO1xuICAgIH07XG4gIH1cblxuXG5cblxuXG4gIGV4cG9ydCBlbnVtIERiQmluYXJ5Rm9ybWF0RW51bSB7XG4gICAgQmxvYiA9ICdCbG9iJyxcbiAgICBGaWxlID0gJ0ZpbGUnLFxuICAgIHN0cmluZyA9ICdzdHJpbmcnLFxuLyogKi9cbi8qICovXG4gIFxuICB9XG5cbiAgZXhwb3J0IHR5cGUgRGJCaW5hcnlGb3JtYXRGb3JCcm93c2VyID0gQmxvYiB8IEZpbGUgfCBzdHJpbmc7XG4vKiAqL1xuLyogKi9cbiAgXG5cbiAgLyoqXG4gICAqIEJpbmFyeSBmb3JtYXQgdGhhdCBjYW4gYmUgc3RvcmVkIGluIGRhdGFiYXNlXG4gICAqXG4gICAqIGZvciBub2RlanMgPT4gQnVmZmVyXG4gICAqIGZvciBzcWwuanMgPT4gc3RyaW5nIChzaG91bGIgYmUgYmxvYiAtIGJ1dCBub3Qgc3VwcG9ydGVkKVxuICAgKlxuICAgKi9cbiAgZXhwb3J0IHR5cGUgRGJCaW5hcnlGb3JtYXQgPVxuICAgIHwgRGJCaW5hcnlGb3JtYXRGb3JCcm93c2VyXG4vKiAqL1xuLyogKi9cbiAgXG5cbiAgZXhwb3J0IG5hbWVzcGFjZSBiaW5hcnkge1xuXG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGlzIGZvciBCUk9XU0VSIE9OTFlcbiAgICAgKlxuICAgICAqIEBwYXJhbSBidWZmZXJcbiAgICAgKiBAcGFyYW0gY29udGVudFR5cGVcbiAgICAgKiBAcmV0dXJuc1xuICAgICAqL1xuICAgIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBhcnJheUJ1ZmZlclRvQmxvYihcbiAgICAgIGJ1ZmZlcjogQXJyYXlCdWZmZXIsXG4gICAgICBjb250ZW50VHlwZTogQ29yZU1vZGVscy5Db250ZW50VHlwZSxcbiAgICApOiBQcm9taXNlPEJsb2I+IHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHJldHVybiBuZXcgQmxvYihbYnVmZmVyXSwgeyB0eXBlOiBjb250ZW50VHlwZSB9KTtcbiAgICB9XG5cblxuXG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGlzIGZvciBCUk9XU0VSIE9OTFlcbiAgICAgKiBAcGFyYW0gYmxvYlxuICAgICAqIEByZXR1cm5zXG4gICAgICovXG4gICAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJsb2JUb0FycmF5QnVmZmVyKGJsb2I6IEJsb2IpOiBQcm9taXNlPEFycmF5QnVmZmVyPiB7XG4gICAgICByZXR1cm4gYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgICByZWFkZXIuYWRkRXZlbnRMaXN0ZW5lcignbG9hZGVuZCcsICgpID0+IHtcbiAgICAgICAgICByZXNvbHZlKHJlYWRlci5yZXN1bHQgYXMgYW55KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJlYWRlci5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIHJlamVjdCk7IC8vIEB0cy1pZ25vcmVcbiAgICAgICAgcmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGJsb2IpO1xuICAgICAgfSk7XG4gICAgfVxuXG5cblxuICAgIC8qKlxuICAgICAqIGl0IGlzIHJldmVycyB0byBiYXNlNjR0b0Jsb2JcbiAgICAgKiBAcGFyYW0gYmxvYlxuICAgICAqIEByZXR1cm5zXG4gICAgICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGJsb2JUb0Jhc2U2NChibG9iOiBCbG9iKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxhbnk+KChyZXNvbHZlLCBfKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICAgIHJlYWRlci5vbmxvYWRlbmQgPSAoKSA9PiByZXNvbHZlKHJlYWRlci5yZXN1bHQpOyAvLyBAdHMtaWdub3JlXG4gICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGJsb2IpO1xuICAgICAgfSk7XG4gICAgfVxuXG5cblxuICAgIC8qKlxuICAgICAqIGl0IGlzIHJldmVycyB0byBibG9iVG9CYXNlNjQoKVxuICAgICAqIEBwYXJhbSBiYXNlNjREYXRhXG4gICAgICogQHJldHVybnNcbiAgICAgKi9cbiAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gYmFzZTY0dG9CbG9iKFxuICAgICAgYmFzZTY0RGF0YTogc3RyaW5nLFxuICAgICAgY29udGVudFR5cGVPdmVycmlkZT86IENvcmVNb2RlbHMuQ29udGVudFR5cGUsXG4gICAgKTogUHJvbWlzZTxCbG9iPiB7XG4gICAgICBsZXQgY29udGVudF90eXBlOiBDb3JlTW9kZWxzLkNvbnRlbnRUeXBlID0gdm9pZCAwIGFzIGFueTtcbiAgICAgIGxldCBmaWxlX2Jhc2U2NDogc3RyaW5nID0gdm9pZCAwIGFzIGFueTtcbiAgICAgIGlmICghY29udGVudFR5cGVPdmVycmlkZSkge1xuICAgICAgICBjb25zdCBtID0gL15kYXRhOiguKz8pO2Jhc2U2NCwoLispJC8uZXhlYyhiYXNlNjREYXRhKTtcbiAgICAgICAgaWYgKCFtKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYFt0YW9uLWZyYW1ld29ya11bYmFzZTY0dG9CbG9iXSBOb3QgYSBiYXNlNjQgYmxvYiBbJHtiYXNlNjREYXRhfV1gLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgW19fLCBjb250ZW50dHlwZSwgZmlsZWJhc2U2NF0gPSBtO1xuICAgICAgICBjb250ZW50X3R5cGUgPSBjb250ZW50dHlwZSBhcyBhbnk7XG4gICAgICAgIGZpbGVfYmFzZTY0ID0gZmlsZWJhc2U2NDtcbiAgICAgIH1cbiAgICAgIGNvbnRlbnRfdHlwZSA9IChcbiAgICAgICAgY29udGVudFR5cGVPdmVycmlkZSA/IGNvbnRlbnRUeXBlT3ZlcnJpZGUgOiBjb250ZW50X3R5cGUgfHwgJydcbiAgICAgICkgYXMgYW55O1xuICAgICAgYmFzZTY0RGF0YSA9IGNvbnRlbnRUeXBlT3ZlcnJpZGUgPyBiYXNlNjREYXRhIDogZmlsZV9iYXNlNjQ7XG4gICAgICBjb25zdCBzbGljZVNpemUgPSAxMDI0O1xuICAgICAgY29uc3QgYnl0ZUNoYXJhY3RlcnMgPSBhdG9iKGJhc2U2NERhdGEpO1xuICAgICAgY29uc3QgYnl0ZXNMZW5ndGggPSBieXRlQ2hhcmFjdGVycy5sZW5ndGg7XG4gICAgICBjb25zdCBzbGljZXNDb3VudCA9IE1hdGguY2VpbChieXRlc0xlbmd0aCAvIHNsaWNlU2l6ZSk7XG4gICAgICBjb25zdCBieXRlQXJyYXlzID0gbmV3IEFycmF5KHNsaWNlc0NvdW50KTtcblxuICAgICAgZm9yIChsZXQgc2xpY2VJbmRleCA9IDA7IHNsaWNlSW5kZXggPCBzbGljZXNDb3VudDsgKytzbGljZUluZGV4KSB7XG4gICAgICAgIGNvbnN0IGJlZ2luID0gc2xpY2VJbmRleCAqIHNsaWNlU2l6ZTtcbiAgICAgICAgY29uc3QgZW5kID0gTWF0aC5taW4oYmVnaW4gKyBzbGljZVNpemUsIGJ5dGVzTGVuZ3RoKTtcblxuICAgICAgICBjb25zdCBieXRlcyA9IG5ldyBBcnJheShlbmQgLSBiZWdpbik7XG5cbiAgICAgICAgZm9yIChsZXQgb2Zmc2V0ID0gYmVnaW4sIGkgPSAwOyBvZmZzZXQgPCBlbmQ7ICsraSwgKytvZmZzZXQpIHtcbiAgICAgICAgICBieXRlc1tpXSA9IGJ5dGVDaGFyYWN0ZXJzW29mZnNldF0uY2hhckNvZGVBdCgwKTtcbiAgICAgICAgfVxuICAgICAgICBieXRlQXJyYXlzW3NsaWNlSW5kZXhdID0gbmV3IFVpbnQ4QXJyYXkoYnl0ZXMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5ldyBCbG9iKGJ5dGVBcnJheXMsIHsgdHlwZTogY29udGVudF90eXBlIH0pO1xuICAgIH1cblxuXG5cblxuICAgIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBiYXNlNjR0b0RiQmluYXJ5Rm9ybWF0KFxuICAgICAgdGV4dDogc3RyaW5nLFxuICAgICk6IFByb21pc2U8RGJCaW5hcnlGb3JtYXQ+IHtcbiAgICAgIGxldCByZXN1bHQ6IERiQmluYXJ5Rm9ybWF0O1xuXG4gICAgICByZXN1bHQgPSBhd2FpdCAoYXN5bmMgKCkgPT4ge1xuICAgICAgICBpZiAoQkxPQl9TVVBQT1JURURfSU5fU1FMSlMpIHtcbiAgICAgICAgICBjb25zdCBibG9iID0gYXdhaXQgYmFzZTY0dG9CbG9iKHRleHQpO1xuICAgICAgICAgIHJldHVybiBibG9iO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0ZXh0IGFzIGFueTtcbiAgICAgIH0pKCk7XG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG5cblxuICAgIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBkYkJpbmFyeUZvcm1hdFRvQmFzZTY0KFxuICAgICAgYmluYXJ5Rm9ybWF0OiBEYkJpbmFyeUZvcm1hdCxcbiAgICApOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgbGV0IHJlc3VsdDogc3RyaW5nO1xuXG4gICAgICByZXN1bHQgPSBhd2FpdCAoYXN5bmMgKCkgPT4ge1xuICAgICAgICBpZiAoQkxPQl9TVVBQT1JURURfSU5fU1FMSlMpIHtcbiAgICAgICAgICBjb25zdCB0ZXh0ID0gYXdhaXQgYmxvYlRvQmFzZTY0KGJpbmFyeUZvcm1hdCBhcyBhbnkpO1xuICAgICAgICAgIHJldHVybiB0ZXh0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBiaW5hcnlGb3JtYXQgYXMgYW55O1xuICAgICAgfSkoKTtcblxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuXG5cblxuICAgIGV4cG9ydCBhc3luYyBmdW5jdGlvbiB0ZXh0VG9EYkJpbmFyeUZvcm1hdChcbiAgICAgIHRleHQ6IHN0cmluZyxcbiAgICApOiBQcm9taXNlPERiQmluYXJ5Rm9ybWF0PiB7XG4gICAgICBsZXQgcmVzdWx0OiBEYkJpbmFyeUZvcm1hdDtcblxuICAgICAgcmVzdWx0ID0gYXdhaXQgKGFzeW5jICgpID0+IHtcbiAgICAgICAgaWYgKEJMT0JfU1VQUE9SVEVEX0lOX1NRTEpTKSB7XG4gICAgICAgICAgY29uc3QgYmxvYiA9IGF3YWl0IHRleHRUb0Jsb2IodGV4dCk7XG4gICAgICAgICAgcmV0dXJuIGJsb2I7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRleHQgYXMgYW55O1xuICAgICAgfSkoKTtcblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cblxuXG4gICAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRiQmluYXJ5Rm9ybWF0VG9UZXh0KFxuICAgICAgYmluYXJ5Rm9ybWF0OiBEYkJpbmFyeUZvcm1hdCxcbiAgICApOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgbGV0IHJlc3VsdDogc3RyaW5nO1xuXG4gICAgICByZXN1bHQgPSBhd2FpdCAoYXN5bmMgKCkgPT4ge1xuICAgICAgICBpZiAoQkxPQl9TVVBQT1JURURfSU5fU1FMSlMpIHtcbiAgICAgICAgICBjb25zdCB0ZXh0ID0gYXdhaXQgYmxvYlRvVGV4dChiaW5hcnlGb3JtYXQgYXMgYW55KTtcbiAgICAgICAgICByZXR1cm4gdGV4dDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYmluYXJ5Rm9ybWF0IGFzIGFueTtcbiAgICAgIH0pKCk7XG5cblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cblxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG5cblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuXG5cbiAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gZmlsZVRvQmxvYihmaWxlOiBGaWxlKSB7XG4gICAgICByZXR1cm4gbmV3IEJsb2IoW25ldyBVaW50OEFycmF5KGF3YWl0IGZpbGUuYXJyYXlCdWZmZXIoKSldLCB7XG4gICAgICAgIHR5cGU6IGZpbGUudHlwZSxcbiAgICAgIH0pO1xuICAgIH1cblxuXG5cbiAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gYmxvYlRvRmlsZShcbiAgICAgIGJsb2I6IEJsb2IsXG4gICAgICBuYW1lRm9yRmlsZTogc3RyaW5nID0gJ215LWZpbGUtbmFtZScsXG4gICAgKTogUHJvbWlzZTxGaWxlPiB7XG4gICAgICBpZiAoIW5hbWVGb3JGaWxlKSB7XG4gICAgICAgIG5hbWVGb3JGaWxlID0gJ25vbmFtZWZpbGUnICsgbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICB9XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICByZXR1cm4gbmV3IEZpbGUoW2Jsb2JdLCBuYW1lRm9yRmlsZSk7XG4gICAgfVxuXG5cblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cblxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG5cblxuICAgIGV4cG9ydCBhc3luYyBmdW5jdGlvbiB0ZXh0VG9CbG9iKFxuICAgICAgdGV4dDogc3RyaW5nLFxuICAgICAgdHlwZTogQ29yZU1vZGVscy5Db250ZW50VHlwZSA9ICd0ZXh0L3BsYWluJyxcbiAgICApOiBQcm9taXNlPEJsb2I+IHtcbiAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbdGV4dF0sIHsgdHlwZSB9KTtcbiAgICAgIHJldHVybiBibG9iO1xuICAgIH1cblxuXG5cbiAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gYmxvYlRvVGV4dChibG9iOiBCbG9iKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgIHJldHVybiBhd2FpdCBibG9iLnRleHQoKTtcbiAgICB9XG5cblxuXG4gICAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRleHRUb0ZpbGUoXG4gICAgICB0ZXh0OiBzdHJpbmcsXG4gICAgICBmaWxlUmVsYXRpdmVQYXRoT3JOYW1lOiBzdHJpbmcsXG4gICAgKTogUHJvbWlzZTxGaWxlPiB7XG5cbiAgICAgIGNvbnN0IGV4dCA9IHBhdGguZXh0bmFtZShmaWxlUmVsYXRpdmVQYXRoT3JOYW1lKTtcblxuICAgICAgY29uc3QgdHlwZSA9IENvcmVNb2RlbHMubWltZVR5cGVzW2V4dF07XG4gICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW3RleHRdLCB7IHR5cGUgfSk7XG4gICAgICBjb25zdCBmaWxlID0gYXdhaXQgYmxvYlRvRmlsZShibG9iLCBmaWxlUmVsYXRpdmVQYXRoT3JOYW1lKTtcblxuXG5cblxuXG4gICAgICByZXR1cm4gZmlsZTtcbiAgICB9XG5cblxuXG4gICAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpbGVUb1RleHQoZmlsZTogRmlsZSk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICByZXR1cm4gYXdhaXQgZmlsZS50ZXh0KCk7XG4gICAgfVxuXG5cblxuICAgIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBqc29uVG9CbG9iKGpzb25PYmo6IG9iamVjdCk6IFByb21pc2U8QmxvYj4ge1xuICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtKU09OLnN0cmluZ2lmeShqc29uT2JqLCBudWxsLCAyKV0sIHtcbiAgICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gYmxvYjtcbiAgICB9XG5cblxuXG4gICAgLyoqXG4gICAgICogVE9ETyBOT1QgVEVTVEVEXG4gICAgICovXG4gICAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJsb2JUb0pzb24oYmxvYjogQmxvYik6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShhd2FpdCBibG9iLnRleHQoKSk7XG4gICAgfVxuXG5cblxuICAgIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRCbG9iRnJvbSh1cmw6IHN0cmluZyk6IFByb21pc2U8QmxvYj4ge1xuICAgICAgY29uc3QgcmVzcG9uc2U6IEF4aW9zUmVzcG9uc2U8QmxvYj4gPSBhd2FpdCBheGlvcyh7XG4gICAgICAgIHVybCxcbiAgICAgICAgbWV0aG9kOiAnZ2V0JyxcbiAgICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYicsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH1cblxuICB9XG5cblxuXG4gIGV4cG9ydCBuYW1lc3BhY2UgY3NzIHtcblxuICAgIC8qKlxuICAgICAqXG4gICAgICogQHBhcmFtIHBpeGVsc0NzcyBwaXhlbHMgZXguIDEwMHB4XG4gICAgICogQHJldHVybnNcbiAgICAgKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gbnVtVmFsdWUocGl4ZWxzQ3NzOiBzdHJpbmcgfCBudW1iZXIpOiBudW1iZXIge1xuXG4gICAgICByZXR1cm4gcGFyc2VJbnQoXG4gICAgICAgIHBpeGVsc0Nzcz8udG9TdHJpbmcoKT8ucmVwbGFjZSgncHgnLCAnJyksXG5cblxuICAgICAgKTtcbiAgICB9XG5cbiAgfVxuXG59XG5cblxuXG5leHBvcnQgbmFtZXNwYWNlIFV0aWxzUHJvY2VzcyB7XG5cbiAgaW50ZXJmYWNlIFJlc29sdmVQcm9taXNlTXNnIHtcbiAgICAvKipcbiAgICAgKiB1bnRpbCB0aGlzIHN0cmluZyBpcyBpbiBvdXRwdXQgb2Ygc3Rkb3V0XG4gICAgICovXG4gICAgc3Rkb3V0Pzogc3RyaW5nIHwgc3RyaW5nW107XG4gICAgLyoqXG4gICAgICogdW50aWwgdGhpcyBzdHJpbmcgaXMgaW4gb3V0cHV0IG9mIHN0ZGVyclxuICAgICAqL1xuICAgIHN0ZGVycj86IHN0cmluZyB8IHN0cmluZ1tdO1xuICAgIC8qKlxuICAgICAqIGJ5IGRlZmF1bHQgb25seSByZXNvbHZlIHdoZW4gZXhpdCBjb2RlIGlzIDBcbiAgICAgKi9cbiAgICByZXNvbHZlQWZ0ZXJBbnlFeGl0Q29kZT86IGJvb2xlYW47XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIFByb2Nlc3NTdGFydE9wdGlvbnMge1xuICAgIC8qKlxuICAgICAqIGJ5IGRlZmF1bHQgaXMgcHJvY2Vzcy5jd2QoKTtcbiAgICAgKi9cbiAgICBjd2Q/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogYnkgZGVmYXVsdCBpcyBmYWxzZVxuICAgICAqL1xuICAgIHNob3dDb21tYW5kPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBNb2RpZnkgb3V0cHV0IGxpbmUgYnkgbGluZVxuICAgICAqL1xuICAgIG91dHB1dExpbmVSZXBsYWNlPzogKG91dHB1dExpbmVTdGRlck9yU3Rkb3V0OiBzdHJpbmcpID0+IHN0cmluZztcbiAgICByZXNvbHZlUHJvbWlzZU1zZz86IFJlc29sdmVQcm9taXNlTXNnO1xuICAgIC8qKlxuICAgICAqIFByZWZpeCBtZXNzYWdlcyBvdXRwdXQgZnJvbSBjaGlsZF9wcm9jZXNzXG4gICAgICovXG4gICAgcHJlZml4Pzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFRyeSBjb21tYW5kIGFnYWluIGFmdGVyIGZhaWwgYWZ0ZXIgbiBtaWxsaXNlY29uZHNcbiAgICAgKi9cbiAgICB0cnlBZ2FpbldoZW5GYWlsQWZ0ZXI/OiBudW1iZXI7XG4gICAgYXNrVG9UcnlBZ2Fpbk9uRXJyb3I/OiBib29sZWFuO1xuICAgIGV4aXRPbkVycm9yQ2FsbGJhY2s/OiAoY29kZTogbnVtYmVyKSA9PiB2b2lkO1xuICAgIC8qKlxuICAgICAqIFVzZSBiaWcgYnVmZmVyIGZvciBiaWcgd2VicGFjayBsb2dzXG4gICAgICogKGl0IG1heSBzbG93IGRvd24gc21hbGxlciBwcm9jZXNzZXMgZXhlY3V0aW9uKVxuICAgICAqL1xuICAgIGJpZ2dlckJ1ZmZlcj86IGJvb2xlYW47XG4gICAgaGlkZU91dHB1dD86IHtcbiAgICAgIHN0ZG91dD86IGJvb2xlYW47XG4gICAgICBzdGRlcnI/OiBib29sZWFuO1xuICAgIH07XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIFRPRE8gSU1QTEVNRU5UXG4gICAqIHN0YXJ0IGFzeW5jIG5vZGUgcHJvY2Vzc1xuICAgKi9cbiAgZXhwb3J0IGNvbnN0IHN0YXJ0QXN5bmMgPSBhc3luYyAoXG4gICAgY29tbWFuZDogc3RyaW5nLFxuICAgIGN3ZDogc3RyaW5nLFxuXG4gICAgb3B0aW9ucz86IE9taXQ8Q29yZU1vZGVscy5FeGVjdXRlT3B0aW9ucywgJ3RyeUFnYWluV2hlbkZhaWxBZnRlcic+LFxuICApOiBQcm9taXNlPHZvaWQ+ID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4gIC8qKlxuICAgKiBUaGlzIGxldCB5b3Ugc3RhcnQgY2hpbGQgcHJvY2VzcyBhbmQgcmVzb2x2ZSBwcm9taXNlIHdoZW4gc29tZVxuICAgKiBjb25kaXRpb24gaXMgbWV0LiBJdCBpcyB1c2VmdWwgZm9yIGV4YW1wbGUgd2hlbiB5b3Ugd2FudCB0byBzdGFydFxuICAgKiBwcm9jZXNzIGFuZCB3YWl0IHVudGlsIHNvbWUgb3V0cHV0IGlzIGluIHN0ZG91dCBvciBzdGRlcnIuXG4gICAqL1xuICBleHBvcnQgY29uc3Qgc3RhcnRBc3luY0NoaWxkUHJvY2Vzc0NvbW1hbmRVbnRpbCA9IGFzeW5jIChcbiAgICBjb21tYW5kOiBzdHJpbmcsXG4gICAgb3B0aW9uczoge1xuICAgICAgLyoqXG4gICAgICAgKiB0ZWxzIHdoZW4gdG8gcmVzb2x2ZSBwcm9taXNlXG4gICAgICAgKi9cbiAgICAgIHVudGlsT3B0aW9uczogUmVzb2x2ZVByb21pc2VNc2c7XG4gICAgICBkaXNwbGF5T3V0cHV0SW5QYXJlbnRQcm9jZXNzPzogYm9vbGVhbjtcbiAgICAgIHJlc29sdmVBZnRlckFueUV4aXRDb2RlPzogYm9vbGVhbjtcbiAgICAgIGN3ZD86IHN0cmluZztcbiAgICB9LFxuICApOiBQcm9taXNlPHZvaWQ+ID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuICBleHBvcnQgY29uc3QgZ2V0R2l0QmFzaFBhdGggPSAoKSA9PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuICAvKipcbiAgICogVE9ETyBJTVBMRU1FTlRcbiAgICogc3RhcnQgYXN5bmMgbm9kZSBwcm9jZXNzXG4gICAqL1xuICBleHBvcnQgY29uc3Qgc3RhcnRJbk5ld1Rlcm1pbmFsV2luZG93ID0gKFxuICAgIGNvbW1hbmQ6IHN0cmluZyxcbiAgICBvcHRpb25zPzogUGljazxQcm9jZXNzU3RhcnRPcHRpb25zLCAnY3dkJyB8ICdoaWRlT3V0cHV0Jz4sXG4gICkgPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuICBleHBvcnQgY29uc3QgZ2V0QmFzaE9yU2hlbGxOYW1lID0gKCk6XG4gICAgfCAnYnJvd3NlcidcbiAgICB8ICdjbWQnXG4gICAgfCAncG93ZXJzaGVsbCdcbiAgICB8ICdnaXRiYXNoJ1xuICAgIHwgJ2N5Z3dpbidcbiAgICB8ICd1bmtub3duJ1xuICAgIHwgJ2Jhc2gnXG4gICAgfCAnenNoJ1xuICAgIHwgJ2Zpc2gnXG4gICAgfCAnc2gnID0+IHtcblxuICAgIHJldHVybiAnYnJvd3Nlcic7XG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cbiAgLyoqXG4gICAqIEdldCBDUFUgYW5kIG1lbW9yeSB1c2FnZSBmb3IgYSBzaW5nbGUgUElELlxuICAgKi9cbiAgZXhwb3J0IGNvbnN0IGdldFVzYWdlRm9yUGlkID0gYXN5bmMgKFxuICAgIHBpZDogbnVtYmVyLFxuICApOiBQcm9taXNlPHsgY3B1OiBudW1iZXI7IG1lbW9yeUluR0I6IG51bWJlcjsgbWVtb3J5SW5NQjogbnVtYmVyIH0+ID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIGxpc3Qgb2YgZGlyZWN0IGNoaWxkIFBJRHMgZm9yIHRoZSBnaXZlbiBQSUQgb24gYSBVbml4LWxpa2Ugc3lzdGVtLlxuICAgKiBVc2VzIGBwcyAtbyBwaWQ9IC0tcHBpZCA8cGlkPmAgdG8gZmluZCBjaGlsZCBwcm9jZXNzZXMuXG4gICAqL1xuICBhc3luYyBmdW5jdGlvbiBnZXRDaGlsZFBpZHNVbml4KHBpZDogbnVtYmVyKTogUHJvbWlzZTxudW1iZXJbXT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBsaXN0IG9mIGRpcmVjdCBjaGlsZCBQSURzIGZvciB0aGUgZ2l2ZW4gUElEIG9uIFdpbmRvd3MuXG4gICAqIFVzZXMgYHdtaWMgcHJvY2VzcyB3aGVyZSAoUGFyZW50UHJvY2Vzc0lkPTxwaWQ+KSBnZXQgUHJvY2Vzc0lkYCB0byBmaW5kIGNoaWxkIHByb2Nlc3Nlcy5cbiAgICovXG4gIGFzeW5jIGZ1bmN0aW9uIGdldENoaWxkUGlkc1dpbmRvd3MocGlkOiBudW1iZXIpOiBQcm9taXNlPG51bWJlcltdPiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcm9zcy1wbGF0Zm9ybSBmdW5jdGlvbiB0byBsaXN0ICpkaXJlY3QqIGNoaWxkIFBJRHMgb2YgYSBnaXZlbiBQSUQuXG4gICAqIFVzZXMgdGhlIGFwcHJvcHJpYXRlIGNvbW1hbmQgZGVwZW5kaW5nIG9uIGBwcm9jZXNzLnBsYXRmb3JtYC5cbiAgICovXG4gIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRDaGlsZFBpZHNPbmNlKHBpZDogbnVtYmVyKTogUHJvbWlzZTxudW1iZXJbXT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgQ1BVIGFuZCBtZW1vcnkgdXNhZ2UgZm9yIHRoZSBjdXJyZW50IHByb2Nlc3MgKHRoZSBOb2RlLmpzIHByb2Nlc3MgaXRzZWxmKSxcbiAgICogcGx1cyBhbnkgY2hpbGQgcHJvY2Vzc2VzIHNwYXduZWQgYnkgaXQuXG4gICAqL1xuICBleHBvcnQgY29uc3QgZ2V0Q3VycmVudFByb2Nlc3NBbmRDaGlsZFVzYWdlID0gYXN5bmMgKCk6IFByb21pc2U8e1xuICAgIGN1cnJlbnQ6IHsgY3B1OiBudW1iZXI7IG1lbW9yeUluTUI6IG51bWJlciB9O1xuICAgIGNoaWxkcmVuOiBBcnJheTx7IHBpZDogbnVtYmVyOyBjcHU6IG51bWJlcjsgbWVtb3J5SW5NQjogbnVtYmVyIH0+O1xuICB9PiA9PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcbn1cblxuXG5cblxuZXhwb3J0IG5hbWVzcGFjZSBVdGlsc09zIHtcblxuICAvKipcbiAgICogY2hlY2sgaWYgc2NyaXB0IGlzIHJ1bm5pbmcgaW4gY2xpZW50IGJyb3dzZXJcbiAgICogKHdlYnNxbCBtb2RlbCAtPiBpcyBhbHNvIGNvbnNpZGVyZWQgYXMgYnJvd3NlclxuICAgKiBiZWNhdXNlIGl0IGlzIHJ1bm5pbmcgaW4gYnJvd3NlcilcbiAgICovXG4gIGV4cG9ydCBjb25zdCBpc1J1bm5pbmdJbkJyb3dzZXIgPSAoKTogYm9vbGVhbiA9PiB7XG4vKiAqL1xuLyogKi9cbiAgXG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG5cblxuXG4gIC8qKlxuICAgKiBjaGVjayBpZiBzY3JpcHQgaXMgcnVubmluZyBpbiBub2RlanNcbiAgICogKGJhY2tlbmQgc2NyaXB0IG9yIGVsZWN0cm9uIHNjcmlwdClcbiAgICovXG4gIGV4cG9ydCBjb25zdCBpc1J1bm5pbmdJbk5vZGUgPSAoKTogYm9vbGVhbiA9PiB7XG4vKiAqL1xuLyogKi9cbiAgXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xuXG5cblxuICAvKipcbiAgICogY2hlY2sgaWYgc2NyaXB0IGlzIHJ1bm5pbmcgc3BlY2lhbFxuICAgKiBicm93c2VyIG1vZGUgdGhhdCBoYXMgc3FsLmpzIGJhY2tlbmRcbiAgICogYW5kIGV4ZWN1dGVzIHNxbCBxdWVyaWVzIGluIGJyb3dzZXJcbiAgICovXG4gIGV4cG9ydCBjb25zdCBpc1J1bm5pbmdJbldlYlNRTCA9ICgpOiBib29sZWFuID0+IHtcbi8qICovXG4vKiAqL1xuICBcblxuLyogKi9cbi8qICovXG4gIFxuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcblxuXG5cbiAgLyoqXG4gICAqIGNoZWNrIHdoZXRoZXIgdGhlIGN1cnJlbnQgcHJvY2VzcyBpcyBydW5uaW5nIGluc2lkZVxuICAgKiBFbGVjdHJvbiBiYWNrZW5kIG9yIGJyb3dzZXIuXG4gICAqL1xuICBleHBvcnQgY29uc3QgaXNSdW5uaW5nSW5FbGVjdHJvbiA9ICgpOiBib29sZWFuID0+IHtcblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpZiAoXG4gICAgICB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgdHlwZW9mIHdpbmRvdy5wcm9jZXNzID09PSAnb2JqZWN0JyAmJlxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgd2luZG93LnByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJ1xuICAgICkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaWYgKFxuICAgICAgdHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmluZWQnICYmXG4gICAgICB0eXBlb2YgcHJvY2Vzcy52ZXJzaW9ucyA9PT0gJ29iamVjdCcgJiZcbiAgICAgICEhcHJvY2Vzcy52ZXJzaW9ucy5lbGVjdHJvblxuICAgICkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG5cbiAgICBpZiAoXG4gICAgICB0eXBlb2YgbmF2aWdhdG9yID09PSAnb2JqZWN0JyAmJlxuICAgICAgdHlwZW9mIG5hdmlnYXRvci51c2VyQWdlbnQgPT09ICdzdHJpbmcnICYmXG4gICAgICBuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ0VsZWN0cm9uJykgPj0gMFxuICAgICkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xuXG5cblxuICAvKipcbiAgICogQ2hlY2sgd2hldGhlciB0aGUgY3VycmVudCBwcm9jZXNzIGlzIHJ1bm5pbmcgaW5zaWRlXG4gICAqIGEgVmlzdWFsIFN0dWRpbyBDb2RlIGV4dGVuc2lvbi5cbiAgICovXG4gIGV4cG9ydCBjb25zdCBpc1J1bm5pbmdJblZzY29kZUV4dGVuc2lvbiA9ICgpOiBib29sZWFuID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgLyoqXG4gICAqIENoZWNrIHdldGhlciB0aGUgY3VycmVudCBwcm9jZXNzIGlzIHJ1bm5pbmcgaW5zaWRlXG4gICAqIHdpbmRvd3Mgc3Vic3lzdGVtIGZvciBsaW51eCAoV1NMKS5cbiAgICovXG4gIGV4cG9ydCBjb25zdCBpc1J1bm5pbmdJbldzbCA9ICgpOiBib29sZWFuID0+IHtcblxuICAgIHJldHVybiBmYWxzZTtcblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cblxuXG4gIGNvbnN0IGdldFByb2Nlc3NUcmVlID0gKCk6IFJlY29yZDxcbiAgICBudW1iZXIsXG4gICAgeyBwaWQ6IG51bWJlcjsgcHBpZDogbnVtYmVyOyBuYW1lOiBzdHJpbmcgfVxuICA+ID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cbiAgY29uc3QgZmluZEFuY2VzdG9yUHJvY2Vzc05hbWUgPSAodGFyZ2V0czogc3RyaW5nW10pOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cbiAgZXhwb3J0IGNvbnN0IGlzUnVubmluZ0luV2luZG93c1Bvd2VyU2hlbGwgPSAoKTogYm9vbGVhbiA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIGZpbmRBbmNlc3RvclByb2Nlc3NOYW1lKFsncG93ZXJzaGVsbC5leGUnLCAncHdzaC5leGUnXSkgIT09IHVuZGVmaW5lZFxuICAgICk7XG4gIH07XG5cbiAgZXhwb3J0IGNvbnN0IGlzUnVubmluZ0luV2luZG93c0NtZCA9ICgpOiBib29sZWFuID0+IHtcbiAgICByZXR1cm4gZmluZEFuY2VzdG9yUHJvY2Vzc05hbWUoWydjbWQuZXhlJ10pICE9PSB1bmRlZmluZWQ7XG4gIH07XG5cblxuXG4gIGV4cG9ydCBjb25zdCBpc1J1bm5pbmdJbkRvY2tlciA9ICgpOiBib29sZWFuID0+IHtcblxuICAgIHJldHVybiBmYWxzZTtcblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgZXhwb3J0IGNvbnN0IGlzUnVubmluZ0luTGludXhHcmFwaGljc0NhcGFibGVFbnZpcm9ubWVudCA9ICgpOiBib29sZWFuID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuICAvKipcbiAgICogQ2hlY2sgd2hldGhlciB0aGUgY3VycmVudCBwcm9jZXNzIGlzIHJ1bm5pbmcgaW4gQ0xJIG1vZGUuXG4gICAqL1xuICBleHBvcnQgY29uc3QgaXNSdW5uaW5nSW5DbGlNb2RlID0gKCk6IGJvb2xlYW4gPT4ge1xuXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4vKiAqL1xuLyogKi9cbiAgICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgLyoqXG4gICAqIENoZWNrIHdoZXRoZXIgdGhlIGN1cnJlbnQgcHJvY2VzcyBpcyBydW5uaW5nIGluIG1vY2hhIHRlc3QuXG4gICAqL1xuICBleHBvcnQgY29uc3QgaXNSdW5uaW5nSW5Nb2NoYVRlc3QgPSAoKTogYm9vbGVhbiA9PiB7XG5cbiAgICByZXR1cm4gZmFsc2U7XG5cbi8qICovXG4vKiAqL1xuICAgICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuICBjb25zdCBpc1BvcnRJblVzZU9uSG9zdCA9IChwb3J0OiBudW1iZXIsIGhvc3Q6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGEgZ2l2ZW4gcG9ydCBpcyBhbHJlYWR5IGluIHVzZSAoYm91bmQgYnkgYW5vdGhlciBwcm9jZXNzKS5cbiAgICpcbiAgICogQHBhcmFtIHBvcnQgLSBUaGUgcG9ydCBudW1iZXIgdG8gY2hlY2suXG4gICAqIEBwYXJhbSBob3N0IC0gVGhlIGhvc3RuYW1lIG9yIElQIGFkZHJlc3MgdG8gYmluZCB0byAoZGVmYXVsdDogJzEyNy4wLjAuMScpLlxuICAgKiBAcmV0dXJucyBQcm9taXNlPGJvb2xlYW4+IC0gUmVzb2x2ZXMgdG8gYHRydWVgIGlmIHRoZSBwb3J0IGlzIGluIHVzZSwgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gICAqL1xuICBleHBvcnQgY29uc3QgaXNQb3J0SW5Vc2UgPSBhc3luYyAoXG4gICAgcG9ydDogbnVtYmVyLFxuICAgIG9wdGlvbnM/OiB7XG4gICAgICAvKipcbiAgICAgICAqICcxMjcuMC4wLjEnIGV0Yy4uXG4gICAgICAgKi9cbiAgICAgIGNoZWNrRm9yU3BlY2lmaWNPbmx5SG9zdD86IHN0cmluZztcbiAgICB9LFxuICApOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG59XG5cblxuXG5leHBvcnQgbmFtZXNwYWNlIFV0aWxzU3RyaW5nIHtcblxuICBleHBvcnQgY29uc3Qga2ViYWJDYXNlTm9TcGxpdE51bWJlcnMgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIGlucHV0XG5cbiAgICAgICAgLnJlcGxhY2UoL1xccysvZywgJy0nKVxuXG4gICAgICAgIC5yZXBsYWNlKC8oW2EtejAtOV0pKFtBLVpdKS9nLCAnJDEtJDInKVxuXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgKTtcbiAgfTtcblxufVxuXG5cblxuLyoqXG4gKiBUYW9uIG1pZ3JhdGlvbiB1dGlsaXRpZXNcbiAqL1xuZXhwb3J0IG5hbWVzcGFjZSBVdGlsc01pZ3JhdGlvbnMge1xuICBleHBvcnQgY29uc3QgZ2V0VGltZXN0YW1wRnJvbUNsYXNzTmFtZSA9IChcbiAgICBjbGFzc05hbWU6IHN0cmluZyxcbiAgKTogbnVtYmVyIHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBbbWF5YmVUaW1lc3RhbXAxLCBtYXliZVRpbWVzdGFtcDJdID0gY2xhc3NOYW1lLnNwbGl0KCdfJykgfHwgW107XG5cbiAgICBjb25zdCB0aW1lc3RhbXAxID0gcGFyc2VJbnQobWF5YmVUaW1lc3RhbXAxKTtcbiAgICBjb25zdCB0aW1lc3RhbXAyID0gcGFyc2VJbnQobWF5YmVUaW1lc3RhbXAyKTtcbiAgICBjb25zdCB0aW1lc3RhbXAgPSAhXy5pc05hTih0aW1lc3RhbXAxKSA/IHRpbWVzdGFtcDEgOiB0aW1lc3RhbXAyO1xuICAgIHJldHVybiBpc1ZhbGlkVGltZXN0YW1wKHRpbWVzdGFtcCkgPyB0aW1lc3RhbXAgOiB2b2lkIDA7XG4gIH07XG5cbiAgZXhwb3J0IGNvbnN0IGdldEZvcm1hdHRlZFRpbWVzdGFtcEZyb21DbGFzc05hbWUgPSAoXG4gICAgY2xhc3NOYW1lOiBzdHJpbmcsXG4gICk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3QgdGltZXN0YW1wID0gZ2V0VGltZXN0YW1wRnJvbUNsYXNzTmFtZShjbGFzc05hbWUpO1xuICAgIGlmICghdGltZXN0YW1wKSB7XG4gICAgICByZXR1cm4gdm9pZCAwO1xuICAgIH1cbiAgICByZXR1cm4gZm9ybWF0VGltZXN0YW1wKHRpbWVzdGFtcCk7XG4gIH07XG5cbiAgZXhwb3J0IGNvbnN0IGZvcm1hdFRpbWVzdGFtcCA9ICh0aW1lc3RhbXA6IG51bWJlcik6IHN0cmluZyA9PiB7XG4gICAgY29uc3QgZGF0ZUZyb21UaW1lc3RhbXA6IERhdGUgPSBuZXcgRGF0ZSh0aW1lc3RhbXApO1xuICAgIHJldHVybiBgJHtkYXRlZm9ybWF0KGRhdGVGcm9tVGltZXN0YW1wLCAnZGQtbW0teXl5eSBISDpNTTpzcycpfWA7XG4gIH07XG5cbiAgZXhwb3J0IGNvbnN0IGlzVmFsaWRUaW1lc3RhbXAgPSAodmFsdWU6IGFueSk6IGJvb2xlYW4gPT4ge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gZmFsc2U7IC8vIE11c3QgYmUgYSBudW1iZXJcbiAgICB9XG5cbiAgICBjb25zdCBtaW5UaW1lc3RhbXAgPSAwOyAvLyBNaW5pbXVtIHBvc3NpYmxlIHRpbWVzdGFtcCAoVW5peCBlcG9jaClcbiAgICBjb25zdCBtYXhUaW1lc3RhbXAgPSA4NjQwMDAwMDAwMDAwMDAwOyAvLyBNYXggc2FmZSB0aW1lc3RhbXAgaW4gSlMgKHJlcHJlc2VudHMgeWVhciB+Mjc1NzYwKVxuXG4gICAgcmV0dXJuIHZhbHVlID49IG1pblRpbWVzdGFtcCAmJiB2YWx1ZSA8PSBtYXhUaW1lc3RhbXA7XG4gIH07XG59XG5cblxuXG5leHBvcnQgbmFtZXNwYWNlIFV0aWxzVGVybWluYWwge1xuXG4gIHR5cGUgU2VsZWN0QWN0aW9uQ2hvaWNlID0ge1xuICAgIFtjaG9pY2U6IHN0cmluZ106IHtcbiAgICAgIC8qKlxuICAgICAgICogVGl0bGUgb2YgdGhlIGNob2ljZVxuICAgICAgICovXG4gICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEFjdGlvbiB0byBleGVjdXRlXG4gICAgICAgKi9cbiAgICAgIGFjdGlvbj86ICgpID0+IGFueTtcbiAgICAgIC8qKlxuICAgICAgICogSWYgY2hvaWNlIGlzIHZpc2libGVcbiAgICAgICAqICBkZWZhdWx0OiB0cnVlXG4gICAgICAgKi9cbiAgICAgIHZpc2libGU/OiBib29sZWFuO1xuICAgIH07XG4gIH07XG5cblxuXG4gIGV4cG9ydCBjb25zdCB3YWl0ID0gKHNlY29uZDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICByZXNvbHZlKHZvaWQgMCk7XG4gICAgICB9LCBzZWNvbmQgKiAxMDAwKTtcbiAgICB9KTtcbiAgfTtcblxuXG5cbiAgZXhwb3J0IGNvbnN0IGNsZWFyQ29uc29sZSA9ICgpOiB2b2lkID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgY29uc3QgdHJhbnNmb3JtQ2hvaWNlcyA9IChcbiAgICBjaG9pY2VzOiBhbnksXG4gICk6IHsgbmFtZTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH1bXSA9PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuICBleHBvcnQgY29uc3QgbXVsdGlzZWxlY3QgPSBhc3luYyA8VCA9IHN0cmluZz4ob3B0aW9uczoge1xuICAgIHF1ZXN0aW9uOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogSWYgdHJ1ZSwgdGhlbiBvbmx5IG9uZSBjaG9pY2UgY2FuIGJlIHNlbGVjdGVkXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIHNlbGVjdCBpbnN0ZWFkXG4gICAgICovXG4gICAgb25seU9uZUNob2ljZT86IGJvb2xlYW47XG4gICAgY2hvaWNlczpcbiAgICAgIHwgeyBuYW1lOiBzdHJpbmc7IHZhbHVlOiBUIH1bXVxuICAgICAgfCB7IFtjaG9pY2U6IHN0cmluZ106IHsgbmFtZTogc3RyaW5nIH0gfTtcbiAgICBhdXRvY29tcGxldGU/OiBib29sZWFuO1xuICAgIGRlZmF1bHRTZWxlY3RlZD86IHN0cmluZ1tdO1xuICB9KTogUHJvbWlzZTxUW10+ID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuICAvKipcbiAgICogU2ltaWxhciB0byBzZWxlY3QgYnV0IGV4ZWN1dGVzIGFjdGlvbiBpZiBwcm92aWRlZFxuICAgKiBAcmV0dXJucyBzZWxlY3RlZCBhbmQgZXhlY3V0ZWQgdmFsdWVcbiAgICovXG4gIGV4cG9ydCBjb25zdCBtdWx0aXNlbGVjdEFjdGlvbkFuZEV4ZWN1dGUgPSBhc3luYyA8XG4gICAgQ0hPSUNFIGV4dGVuZHMgU2VsZWN0QWN0aW9uQ2hvaWNlID0gU2VsZWN0QWN0aW9uQ2hvaWNlLFxuICA+KFxuICAgIGNob2ljZXM6IENIT0lDRSxcbiAgICBvcHRpb25zPzoge1xuICAgICAgcXVlc3Rpb24/OiBzdHJpbmc7XG4gICAgICBhdXRvY29tcGxldGU/OiBib29sZWFuO1xuICAgICAgZGVmYXVsdFNlbGVjdGVkPzogc3RyaW5nO1xuICAgICAgaGludD86IHN0cmluZztcbiAgICAgIGV4ZWN1dGVBY3Rpb25zT25EZWZhdWx0PzogYm9vbGVhbjtcbiAgICB9LFxuICApID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuICAvKipcbiAgICogU2ltaWxhciB0byBzZWxlY3QgYnV0IGV4ZWN1dGVzIGFjdGlvbiBpZiBwcm92aWRlZFxuICAgKiBAcmV0dXJucyBzZWxlY3RlZCBhbmQgZXhlY3V0ZWQgdmFsdWVcbiAgICovXG4gIGV4cG9ydCBjb25zdCBzZWxlY3RBY3Rpb25BbmRFeGVjdXRlID0gYXN5bmMgPFxuICAgIENIT0lDRSBleHRlbmRzIFNlbGVjdEFjdGlvbkNob2ljZSA9IFNlbGVjdEFjdGlvbkNob2ljZSxcbiAgPihcbiAgICBjaG9pY2VzOiBDSE9JQ0UsXG4gICAgb3B0aW9ucz86IHtcbiAgICAgIHF1ZXN0aW9uPzogc3RyaW5nO1xuICAgICAgYXV0b2NvbXBsZXRlPzogYm9vbGVhbjtcbiAgICAgIGRlZmF1bHRTZWxlY3RlZD86IHN0cmluZztcbiAgICAgIGhpbnQ/OiBzdHJpbmc7XG4gICAgICBleGVjdXRlQWN0aW9uT25EZWZhdWx0PzogYm9vbGVhbjtcbiAgICB9LFxuICApID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgZXhwb3J0IGNvbnN0IHNlbGVjdCA9IGFzeW5jIDxUID0gc3RyaW5nPihvcHRpb25zOiB7XG4gICAgcXVlc3Rpb246IHN0cmluZztcbiAgICBjaG9pY2VzOlxuICAgICAgfCB7IG5hbWU6IHN0cmluZzsgdmFsdWU6IFQgfVtdXG4gICAgICB8IHsgW2Nob2ljZTogc3RyaW5nXTogeyBuYW1lOiBzdHJpbmcgfSB9O1xuICAgIGF1dG9jb21wbGV0ZT86IGJvb2xlYW47XG4gICAgZGVmYXVsdFNlbGVjdGVkPzogc3RyaW5nO1xuICAgIGhpbnQ/OiBzdHJpbmc7XG4gIH0pOiBQcm9taXNlPFQ+ID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cblxuXG5cbiAgZXhwb3J0IGNvbnN0IHBpcGVFbnRlclRvU3RkaW4gPSAoKTogdm9pZCA9PiB7XG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cblxuXG4gIGV4cG9ydCBjb25zdCBpbnB1dCA9IGFzeW5jICh7XG4gICAgZGVmYXVsdFZhbHVlLFxuICAgIHF1ZXN0aW9uLFxuICAgIHJlcXVpcmVkLCAvLyBUT0RPIHNvbWV0aGluZyBpcyB3ZXJpZCB3aXRoIHJlcXVpcmVkXG4gIH06IHtcbiAgICBkZWZhdWx0VmFsdWU/OiBzdHJpbmc7XG4gICAgcXVlc3Rpb246IHN0cmluZztcbiAgICByZXF1aXJlZD86IGJvb2xlYW47XG4gICAgdmFsaWRhdGU/OiAodmFsdWU6IHN0cmluZykgPT4gYm9vbGVhbjtcbiAgfSk6IFByb21pc2U8c3RyaW5nPiA9PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgZXhwb3J0IGNvbnN0IGNvbmZpcm0gPSBhc3luYyAob3B0aW9ucz86IHtcbiAgICAvKipcbiAgICAgKiBkZWZhdWx0OiBBcmUgeW91IHN1cmU/XG4gICAgICovXG4gICAgbWVzc2FnZT86IHN0cmluZztcbiAgICBjYWxsYmFja1RydWU/OiAoKSA9PiBhbnk7XG4gICAgY2FsbGJhY2tGYWxzZT86ICgpID0+IGFueTtcbiAgICAvKipcbiAgICAgKiBkZWZhdWx0OiB0cnVlXG4gICAgICovXG4gICAgZGVmYXVsdFZhbHVlPzogYm9vbGVhbjtcbiAgICBlbmdpbmU/OiAnaW5xdWlyZXItdG9nZ2xlJyB8ICdwcm9tcHRzJyB8ICdlbnF1aXJlcicgfCAnQGlucXVpcmVyL3Byb21wdHMnO1xuICB9KSA9PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgZXhwb3J0IGNvbnN0IHByZXNzQW55S2V5VG9Db250aW51ZUFzeW5jID0gKG9wdGlvbnM/OiB7XG4gICAgbWVzc2FnZT86IHN0cmluZztcbiAgfSk6IFByb21pc2U8dm9pZD4gPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBVdGlsc1Rlcm1pbmFsLnByZXNzQW55S2V5VG9Db250aW51ZUFzeW5jKClcbiAgICovXG4gIGV4cG9ydCBjb25zdCBwcmVzc0FueUtleSA9IChvcHRpb25zPzogeyBtZXNzYWdlPzogc3RyaW5nIH0pID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cblxuXG4gIGV4cG9ydCBjb25zdCBwcmV2aWV3TG9uZ0xpc3QgPSBhc3luYyAoXG4gICAgbGlzdDogc3RyaW5nIHwgc3RyaW5nW10sXG4gICAgbGlzdE5hbWUgPSAnTGlzdCcsXG4gICk6IFByb21pc2U8dm9pZD4gPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuICAvKipcbiAgICogRGlzcGxheXMgYSBsb25nIGxpc3QgaW4gdGhlIGNvbnNvbGUgdXNpbmcgYSBwYWdlciBsaWtlIGBsZXNzYC5cbiAgICogUmV0dXJucyBhIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSB1c2VyIGV4aXRzIHRoZSBwYWdlci5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGxpc3QgLSBUaGUgbG9uZyBzdHJpbmcgY29udGVudCB0byBkaXNwbGF5LlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgcGFnZXIgZXhpdHMuXG4gICAqL1xuICBleHBvcnQgY29uc3QgcHJldmlld0xvbmdMaXN0R2l0TG9nTGlrZSA9IChcbiAgICBsaXN0OiBzdHJpbmcgfCBzdHJpbmdbXSxcbiAgKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG59XG5cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPXRucC1jb3JlIGxpYi91dGlscy50cyJdfQ==
1946
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItZGlzdC90bnAtY29yZS9wcm9qZWN0cy90bnAtY29yZS9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFLOUIsT0FBTyxLQUF3QixNQUFNLE9BQU8sQ0FBQztBQUU3QyxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBZ0MsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHNUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUszQyxNQUFNLHVCQUF1QixHQUFHLEtBQUssQ0FBQztBQUd0QyxNQUFNLEtBQVcsS0FBSyxDQTZzQnJCO0FBN3NCRCxXQUFpQixLQUFLO0lBRVAsZUFBUyxHQUFHLENBQ3ZCLEtBQVksRUFDWixjQUF3QixFQUN4QixFQUFFO1FBQ0YsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2QsT0FBTyxLQUFLO2FBQ1QsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNoQixNQUFNLENBQUMsVUFBVSxJQUFJO1lBQ3BCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUN0RSxDQUFDLENBQUMsS0FBSztnQkFDUCxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ2xFLENBQUMsQ0FBUSxDQUFDO0lBQ2QsQ0FBQyxDQUFDO0lBSUY7OztP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S0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQyxDQUFDO0lBYUY7Ozs7T0FJRztJQUNVLCtDQUFrQyxHQUFHLEtBQUssRUFDckQsT0FBZSxFQUNmLE9BUUMsRUFDYyxFQUFFO1FBQ3JCLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQyxDQUFDO0lBSVcsMkJBQWMsR0FBRyxHQUFHLEVBQUU7UUFDckMsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQyxDQUFDO0lBSUY7OztPQUdHO0lBQ1UscUNBQXdCLEdBQUcsQ0FDdEMsT0FBZSxFQUNmLE9BQXlELEVBQ3pELEVBQUU7UUFDTixLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxL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LEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQyxDQUFDO0lBSUY7OztPQUdHO0lBQ1UseUNBQTJCLEdBQUcsS0FBSyxFQUc5QyxPQUFlLEVBQ2YsT0FNQyxFQUNELEVBQUU7UUFDTixLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FB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SztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUMsQ0FBQztJQUlXLHdDQUEwQixHQUFHLENBQUMsT0FFMUMsRUFBaUIsRUFBRTtRQUN0QixLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDLENBQUM7SUFJRjs7T0FFRztJQUNVLHlCQUFXLEdBQUcsQ0FBQyxPQUE4QixFQUFFLEVBQUU7UUFDaEUsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQyxDQUFDO0lBSVcsNkJBQWUsR0FBRyxLQUFLLEVBQ2xDLElBQXVCLEVBQ3ZCLFFBQVEsR0FBRyxNQUFNLEVBQ0YsRUFBRTtRQUNyQixLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUMsQ0FBQztJQUlGOzs7Ozs7T0FNRztJQUNVLHVDQUF5QixHQUFHLENBQ3ZDLElBQXVCLEVBQ1IsRUFBRTtRQUNyQixLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDLENBQUM7QUFFSixDQUFDLEVBOW1CZ0IsYUFBYSxLQUFiLGFBQWEsUUE4bUI3QjtBQUdBLENBQUM7QUFBQSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsa0RBQWtEIiwic291cmNlc0NvbnRlbnQiOlsiXG5cblxuaW1wb3J0IHsgQmxvYiB9IGZyb20gJ2J1ZmZlcic7XG5pbXBvcnQgeyBDaGlsZFByb2Nlc3MgfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCAqIGFzIG5ldCBmcm9tICduZXQnO1xuaW1wb3J0IHsgcHJvbWlzaWZ5IH0gZnJvbSAndXRpbCc7XG5cbmltcG9ydCBheGlvcywgeyBBeGlvc1Jlc3BvbnNlIH0gZnJvbSAnYXhpb3MnO1xuXG5pbXBvcnQgeyBwYXRoLCBfLCBjcm9zc1BsYXRmb3JtUGF0aCwgb3MsIGNoYWxrIH0gZnJvbSAnLi9jb3JlLWltcG9ydHMnO1xuaW1wb3J0IHsgZGF0ZWZvcm1hdCB9IGZyb20gJy4vY29yZS1pbXBvcnRzJztcbmltcG9ydCB7IHNwYXduLCBjaGlsZF9wcm9jZXNzIH0gZnJvbSAnLi9jb3JlLWltcG9ydHMnO1xuaW1wb3J0IHsgZnNlIH0gZnJvbSAnLi9jb3JlLWltcG9ydHMnO1xuaW1wb3J0IHsgQ29yZU1vZGVscyB9IGZyb20gJy4vY29yZS1tb2RlbHMnO1xuXG5pbXBvcnQgeyBIZWxwZXJzIH0gZnJvbSAnLi9pbmRleCc7XG5cblxuY29uc3QgQkxPQl9TVVBQT1JURURfSU5fU1FMSlMgPSBmYWxzZTtcblxuXG5leHBvcnQgbmFtZXNwYWNlIFV0aWxzIHtcblxuICBleHBvcnQgY29uc3QgdW5pcUFycmF5ID0gPFQgPSBhbnk+KFxuICAgIGFycmF5OiBhbnlbXSxcbiAgICB1bmlxdWVQcm9wZXJ0eT86IGtleW9mIFQsXG4gICkgPT4ge1xuICAgIHZhciBzZWVuID0ge307XG4gICAgcmV0dXJuIGFycmF5XG4gICAgICAuZmlsdGVyKGYgPT4gISFmKVxuICAgICAgLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICByZXR1cm4gc2Vlbi5oYXNPd25Qcm9wZXJ0eSh1bmlxdWVQcm9wZXJ0eSA/IGl0ZW1bdW5pcXVlUHJvcGVydHldIDogaXRlbSlcbiAgICAgICAgICA/IGZhbHNlXG4gICAgICAgICAgOiAoc2Vlblt1bmlxdWVQcm9wZXJ0eSA/IGl0ZW1bdW5pcXVlUHJvcGVydHldIDogaXRlbV0gPSB0cnVlKTtcbiAgICAgIH0pIGFzIFRbXTtcbiAgfTtcblxuXG5cbiAgLyoqXG4gICAqIEBwYXJhbSBhbnlPYmplY3RcbiAgICogQHJldHVybnMgb2JqZWN0IHdpdGggc29ydGVkIGtleXNcbiAgICovXG4gIGV4cG9ydCBjb25zdCBzb3J0S2V5cyA9IChhbnlPYmplY3Q6IGFueSk6IGFueSA9PiB7XG4gICAgaWYgKF8uaXNBcnJheShhbnlPYmplY3QpKSB7XG4gICAgICByZXR1cm4gYW55T2JqZWN0Lm1hcChzb3J0S2V5cyk7XG4gICAgfVxuICAgIGlmIChfLmlzT2JqZWN0KGFueU9iamVjdCkpIHtcbiAgICAgIHJldHVybiBfLmZyb21QYWlycyhcbiAgICAgICAgXy5rZXlzKGFueU9iamVjdClcbiAgICAgICAgICAuc29ydCgpXG4gICAgICAgICAgLm1hcChrZXkgPT4gW2tleSwgc29ydEtleXMoYW55T2JqZWN0W2tleV0pXSksXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gYW55T2JqZWN0O1xuICB9O1xuXG5cblxuICAvKipcbiAgICogRXhhbXBsZTpcbiAgICogbmV3IFJlZ0V4cChlc2NhcGVTdHJpbmdGb3JSZWdFeCgnYS5iLmMnKSwnZycpID0+IC9hXFwuYlxcLmMvZ1xuICAgKi9cbiAgZXhwb3J0IGNvbnN0IGVzY2FwZVN0cmluZ0ZvclJlZ0V4ID0gKHN0cmluZ0ZvclJlZ0V4cDogc3RyaW5nKSA9PiB7XG4gICAgcmV0dXJuIHN0cmluZ0ZvclJlZ0V4cC5yZXBsYWNlKC9bLVxcL1xcXFxeJCorPy4oKXxbXFxde31dL2csICdcXFxcJCYnKTtcbiAgfTtcblxuXG5cbiAgZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUNoYWxrU3BlY2lhbENoYXJzKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcblxuICAgIGNvbnN0IGFuc2lSZWdleCA9IC9cXHUwMDFiXFxbWzAtOTtdKm0vZztcblxuXG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKGFuc2lSZWdleCwgJycpO1xuICB9XG5cblxuXG4gIGV4cG9ydCBjb25zdCBmdWxsRGF0ZVRpbWUgPSAoKSA9PiB7XG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cblxuXG4gIGV4cG9ydCBjb25zdCBmdWxsRGF0ZSA9ICgpID0+IHtcbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgY29uc3QgdGFrZW5Qb3J0cyA9IFtdO1xuICBleHBvcnQgY29uc3QgZ2V0RnJlZVBvcnQgPSBhc3luYyAob3B0aW9ucz86IHtcbiAgICBzdGFydEZyb20/OiBudW1iZXI7XG4gIH0pOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgLyoqXG4gICAqIFRyYXZlcnNlcyB0aGUgY2FjaGUgdG8gc2VhcmNoIGZvciBhbGwgdGhlIGNhY2hlZFxuICAgKiBmaWxlcyBvZiB0aGUgc3BlY2lmaWVkIG1vZHVsZSBuYW1lXG4gICAqL1xuICBjb25zdCBzZWFyY2hDYWNoZSA9IChtb2R1bGVOYW1lLCBjYWxsYmFjaykgPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGEgbW9kdWxlIGZyb20gdGhlIGNhY2hlXG4gICAqL1xuICBjb25zdCBwdXJnZUNhY2hlID0gbW9kdWxlTmFtZSA9PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cbiAgZXhwb3J0IGNvbnN0IHJlcXVpcmVVbmNhY2hlZCA9IChtb2R1bGU6IHN0cmluZykgPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cblxuXG5cbiAgLyoqXG4gICAqIHNpbWlsYXIgdG8gY2FtZWxDYXNlIGJ1dCByZW1vdmVcbiAgICogYWxsIG5vbiB3b3JkIC8gcmVwZWF0ZWQgY2hhcmFjdGVyc1xuICAgKi9cbiAgZXhwb3J0IGNvbnN0IGNhbWVsaXplID0gKHN0cjogc3RyaW5nID0gJycpID0+IHtcbiAgICBzdHIgPSBzdHIucmVwbGFjZSgvXFxXL2csICcnKS50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiBzdHJcbiAgICAgIC5yZXBsYWNlKC8oPzpeXFx3fFtBLVpdfFxcYlxcdykvZywgZnVuY3Rpb24gKHdvcmQsIGluZGV4KSB7XG4gICAgICAgIHJldHVybiBpbmRleCA9PSAwID8gd29yZC50b0xvd2VyQ2FzZSgpIDogd29yZC50b1VwcGVyQ2FzZSgpO1xuICAgICAgfSlcbiAgICAgIC5yZXBsYWNlKC9cXHMrL2csICcnKTtcbiAgfTtcblxuXG5cbiAgaW50ZXJmYWNlIEF0dHJKc29uY1Byb3Age1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB2YWx1ZT86IGFueTtcbiAgfVxuICBleHBvcnQgbmFtZXNwYWNlIGpzb24ge1xuICAgIGV4cG9ydCBjb25zdCBnZXRBdHJyaWJ1dGllcyA9IChcbiAgICAgIGpzb25EZWVwUGF0aDogc3RyaW5nLCAvLyBsb2Rhc2ggcGF0aCB0byBwcm9wZXJ0eSBpbiBqc29uIGV4LiBkZWVwLnBhdGgudG8ucHJvcFxuICAgICAgZmlsZUNvbnRlbnQ6IHN0cmluZywgLy8ganNvbmMgb3IganNvbjUgLSBqc29uIHdpdGggY29tbWVudHNcbiAgICApOiBBdHRySnNvbmNQcm9wW10gPT4ge1xuICAgICAgY29uc3QgbGluZXMgPSBmaWxlQ29udGVudC5zcGxpdCgnXFxuJyk7XG5cbiAgICAgIGNvbnN0IHBhdGhQYXJ0cyA9IGpzb25EZWVwUGF0aC5zcGxpdCgnLicpLnJlZHVjZSgoYSwgYikgPT4ge1xuICAgICAgICBpZiAoYS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICByZXR1cm4gW2JdO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxhc3Q6IHN0cmluZyA9IGFbYS5sZW5ndGggLSAxXTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIChsYXN0LnN0YXJ0c1dpdGgoYFsnYCkgJiYgYi5lbmRzV2l0aChgJ11gKSkgfHxcbiAgICAgICAgICAobGFzdC5zdGFydHNXaXRoKGBbXCJgKSAmJiBiLmVuZHNXaXRoKGBcIl1gKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgYVthLmxlbmd0aCAtIDFdID0gW2xhc3QsIGJdLmpvaW4oJy4nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhLnB1c2goYik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGE7XG4gICAgICB9LCBbXSk7XG5cblxuICAgICAgY29uc3Qga2V5TmFtZSA9IHBhdGhQYXJ0cy5wb3AoKSEucmVwbGFjZSgvXlxcW1wiKC4rKVwiXFxdJC8sICckMScpO1xuICAgICAgbGV0IGN1cnJlbnRQYXRoID0gJyc7XG4gICAgICBsZXQgYXR0cmlidXRlczogQXR0ckpzb25jUHJvcFtdID0gW107XG4gICAgICBsZXQgY29sbGVjdGVkQ29tbWVudHM6IHN0cmluZ1tdID0gW107XG5cbiAgICAgIGZvciAoY29uc3QgbGluZSBvZiBsaW5lcykge1xuICAgICAgICBjb25zdCB0cmltbWVkTGluZSA9IGxpbmUudHJpbSgpO1xuXG4gICAgICAgIGlmICh0cmltbWVkTGluZS5zdGFydHNXaXRoKCcvLycpKSB7XG5cbiAgICAgICAgICBjb2xsZWN0ZWRDb21tZW50cy5wdXNoKHRyaW1tZWRMaW5lKTtcblxuXG4gICAgICAgIH0gZWxzZSBpZiAodHJpbW1lZExpbmUuc3RhcnRzV2l0aCgnXCInKSB8fCB0cmltbWVkTGluZS5zdGFydHNXaXRoKFwiJ1wiKSkge1xuXG4gICAgICAgICAgY29uc3QgbWF0Y2ggPSB0cmltbWVkTGluZS5tYXRjaCgvW1wiJ10oW15cIiddKylbXCInXVxccyo6Lyk7XG5cbiAgICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IG1hdGNoWzFdO1xuICAgICAgICAgICAgY3VycmVudFBhdGggPSBjdXJyZW50UGF0aFxuICAgICAgICAgICAgICA/IGAke2N1cnJlbnRQYXRofS4ke2tleS5pbmNsdWRlcygnLicpID8gYFsnJHtrZXl9J11gIDoga2V5fWBcbiAgICAgICAgICAgICAgOiBrZXk7XG5cblxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAoY3VycmVudFBhdGguZW5kc1dpdGgoa2V5TmFtZSkgJiZcbiAgICAgICAgICAgICAgICAhY3VycmVudFBhdGguZW5kc1dpdGgoJy8nICsga2V5TmFtZSkpIHx8XG4gICAgICAgICAgICAgIGN1cnJlbnRQYXRoLmVuZHNXaXRoKGBbJyR7a2V5TmFtZX0nXWApXG4gICAgICAgICAgICApIHtcblxuXG5cblxuXG4gICAgICAgICAgICAgIGF0dHJpYnV0ZXMgPSBleHRyYWN0QXR0cmlidXRlc0Zyb21Db21tZW50cyhjb2xsZWN0ZWRDb21tZW50cyk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG5cbiAgICAgICAgICAgIGNvbGxlY3RlZENvbW1lbnRzID0gW107XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhdHRyaWJ1dGVzO1xuICAgIH07XG5cbiAgICBjb25zdCBleHRyYWN0QXR0cmlidXRlc0Zyb21Db21tZW50cyA9IChcbiAgICAgIGNvbW1lbnRzOiBzdHJpbmdbXSxcbiAgICApOiBBdHRySnNvbmNQcm9wW10gPT4ge1xuICAgICAgY29uc3QgYXR0cmlidXRlczogQXR0ckpzb25jUHJvcFtdID0gW107XG4gICAgICBjb25zdCBhdHRyUmVnZXggPSAvQChcXHcrKSg/Olxccyo9XFxzKihbXlxcc0BdKykpPy9nO1xuXG4gICAgICBmb3IgKGNvbnN0IGNvbW1lbnQgb2YgY29tbWVudHMpIHtcbiAgICAgICAgbGV0IG1hdGNoO1xuICAgICAgICB3aGlsZSAoKG1hdGNoID0gYXR0clJlZ2V4LmV4ZWMoY29tbWVudCkpICE9PSBudWxsKSB7XG4gICAgICAgICAgY29uc3QgWywgbmFtZSwgdmFsdWVdID0gbWF0Y2g7XG5cbiAgICAgICAgICBjb25zdCBleGlzdGluZ0F0dHJpYnV0ZSA9IGF0dHJpYnV0ZXMuZmluZChcbiAgICAgICAgICAgIGF0dHIgPT4gYXR0ci5uYW1lID09PSBgQCR7bmFtZX1gLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBpZiAoZXhpc3RpbmdBdHRyaWJ1dGUpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShleGlzdGluZ0F0dHJpYnV0ZS52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBleGlzdGluZ0F0dHJpYnV0ZS52YWx1ZS5wdXNoKHZhbHVlKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBleGlzdGluZ0F0dHJpYnV0ZS52YWx1ZSA9IFtleGlzdGluZ0F0dHJpYnV0ZS52YWx1ZSwgdmFsdWVdO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZXMucHVzaCh7XG4gICAgICAgICAgICAgIG5hbWU6IGBAJHtuYW1lfWAsXG4gICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSA/IHZhbHVlIDogdHJ1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG5cbiAgICAgIGF0dHJpYnV0ZXMuZm9yRWFjaChhdHRyID0+IHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYXR0ci52YWx1ZSkgJiYgYXR0ci52YWx1ZS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICBhdHRyLnZhbHVlID0gYXR0ci52YWx1ZVswXTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBhdHRyaWJ1dGVzO1xuICAgIH07XG4gIH1cblxuXG5cblxuXG4gIGV4cG9ydCBlbnVtIERiQmluYXJ5Rm9ybWF0RW51bSB7XG4gICAgQmxvYiA9ICdCbG9iJyxcbiAgICBGaWxlID0gJ0ZpbGUnLFxuICAgIHN0cmluZyA9ICdzdHJpbmcnLFxuLyogKi9cbi8qICovXG4gIFxuICB9XG5cbiAgZXhwb3J0IHR5cGUgRGJCaW5hcnlGb3JtYXRGb3JCcm93c2VyID0gQmxvYiB8IEZpbGUgfCBzdHJpbmc7XG4vKiAqL1xuLyogKi9cbiAgXG5cbiAgLyoqXG4gICAqIEJpbmFyeSBmb3JtYXQgdGhhdCBjYW4gYmUgc3RvcmVkIGluIGRhdGFiYXNlXG4gICAqXG4gICAqIGZvciBub2RlanMgPT4gQnVmZmVyXG4gICAqIGZvciBzcWwuanMgPT4gc3RyaW5nIChzaG91bGIgYmUgYmxvYiAtIGJ1dCBub3Qgc3VwcG9ydGVkKVxuICAgKlxuICAgKi9cbiAgZXhwb3J0IHR5cGUgRGJCaW5hcnlGb3JtYXQgPVxuICAgIHwgRGJCaW5hcnlGb3JtYXRGb3JCcm93c2VyXG4vKiAqL1xuLyogKi9cbiAgXG5cbiAgZXhwb3J0IG5hbWVzcGFjZSBiaW5hcnkge1xuXG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGlzIGZvciBCUk9XU0VSIE9OTFlcbiAgICAgKlxuICAgICAqIEBwYXJhbSBidWZmZXJcbiAgICAgKiBAcGFyYW0gY29udGVudFR5cGVcbiAgICAgKiBAcmV0dXJuc1xuICAgICAqL1xuICAgIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBhcnJheUJ1ZmZlclRvQmxvYihcbiAgICAgIGJ1ZmZlcjogQXJyYXlCdWZmZXIsXG4gICAgICBjb250ZW50VHlwZTogQ29yZU1vZGVscy5Db250ZW50VHlwZSxcbiAgICApOiBQcm9taXNlPEJsb2I+IHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHJldHVybiBuZXcgQmxvYihbYnVmZmVyXSwgeyB0eXBlOiBjb250ZW50VHlwZSB9KTtcbiAgICB9XG5cblxuXG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGlzIGZvciBCUk9XU0VSIE9OTFlcbiAgICAgKiBAcGFyYW0gYmxvYlxuICAgICAqIEByZXR1cm5zXG4gICAgICovXG4gICAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJsb2JUb0FycmF5QnVmZmVyKGJsb2I6IEJsb2IpOiBQcm9taXNlPEFycmF5QnVmZmVyPiB7XG4gICAgICByZXR1cm4gYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgICByZWFkZXIuYWRkRXZlbnRMaXN0ZW5lcignbG9hZGVuZCcsICgpID0+IHtcbiAgICAgICAgICByZXNvbHZlKHJlYWRlci5yZXN1bHQgYXMgYW55KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJlYWRlci5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIHJlamVjdCk7IC8vIEB0cy1pZ25vcmVcbiAgICAgICAgcmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGJsb2IpO1xuICAgICAgfSk7XG4gICAgfVxuXG5cblxuICAgIC8qKlxuICAgICAqIGl0IGlzIHJldmVycyB0byBiYXNlNjR0b0Jsb2JcbiAgICAgKiBAcGFyYW0gYmxvYlxuICAgICAqIEByZXR1cm5zXG4gICAgICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGJsb2JUb0Jhc2U2NChibG9iOiBCbG9iKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxhbnk+KChyZXNvbHZlLCBfKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICAgIHJlYWRlci5vbmxvYWRlbmQgPSAoKSA9PiByZXNvbHZlKHJlYWRlci5yZXN1bHQpOyAvLyBAdHMtaWdub3JlXG4gICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGJsb2IpO1xuICAgICAgfSk7XG4gICAgfVxuXG5cblxuICAgIC8qKlxuICAgICAqIGl0IGlzIHJldmVycyB0byBibG9iVG9CYXNlNjQoKVxuICAgICAqIEBwYXJhbSBiYXNlNjREYXRhXG4gICAgICogQHJldHVybnNcbiAgICAgKi9cbiAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gYmFzZTY0dG9CbG9iKFxuICAgICAgYmFzZTY0RGF0YTogc3RyaW5nLFxuICAgICAgY29udGVudFR5cGVPdmVycmlkZT86IENvcmVNb2RlbHMuQ29udGVudFR5cGUsXG4gICAgKTogUHJvbWlzZTxCbG9iPiB7XG4gICAgICBsZXQgY29udGVudF90eXBlOiBDb3JlTW9kZWxzLkNvbnRlbnRUeXBlID0gdm9pZCAwIGFzIGFueTtcbiAgICAgIGxldCBmaWxlX2Jhc2U2NDogc3RyaW5nID0gdm9pZCAwIGFzIGFueTtcbiAgICAgIGlmICghY29udGVudFR5cGVPdmVycmlkZSkge1xuICAgICAgICBjb25zdCBtID0gL15kYXRhOiguKz8pO2Jhc2U2NCwoLispJC8uZXhlYyhiYXNlNjREYXRhKTtcbiAgICAgICAgaWYgKCFtKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYFt0YW9uLWZyYW1ld29ya11bYmFzZTY0dG9CbG9iXSBOb3QgYSBiYXNlNjQgYmxvYiBbJHtiYXNlNjREYXRhfV1gLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgW19fLCBjb250ZW50dHlwZSwgZmlsZWJhc2U2NF0gPSBtO1xuICAgICAgICBjb250ZW50X3R5cGUgPSBjb250ZW50dHlwZSBhcyBhbnk7XG4gICAgICAgIGZpbGVfYmFzZTY0ID0gZmlsZWJhc2U2NDtcbiAgICAgIH1cbiAgICAgIGNvbnRlbnRfdHlwZSA9IChcbiAgICAgICAgY29udGVudFR5cGVPdmVycmlkZSA/IGNvbnRlbnRUeXBlT3ZlcnJpZGUgOiBjb250ZW50X3R5cGUgfHwgJydcbiAgICAgICkgYXMgYW55O1xuICAgICAgYmFzZTY0RGF0YSA9IGNvbnRlbnRUeXBlT3ZlcnJpZGUgPyBiYXNlNjREYXRhIDogZmlsZV9iYXNlNjQ7XG4gICAgICBjb25zdCBzbGljZVNpemUgPSAxMDI0O1xuICAgICAgY29uc3QgYnl0ZUNoYXJhY3RlcnMgPSBhdG9iKGJhc2U2NERhdGEpO1xuICAgICAgY29uc3QgYnl0ZXNMZW5ndGggPSBieXRlQ2hhcmFjdGVycy5sZW5ndGg7XG4gICAgICBjb25zdCBzbGljZXNDb3VudCA9IE1hdGguY2VpbChieXRlc0xlbmd0aCAvIHNsaWNlU2l6ZSk7XG4gICAgICBjb25zdCBieXRlQXJyYXlzID0gbmV3IEFycmF5KHNsaWNlc0NvdW50KTtcblxuICAgICAgZm9yIChsZXQgc2xpY2VJbmRleCA9IDA7IHNsaWNlSW5kZXggPCBzbGljZXNDb3VudDsgKytzbGljZUluZGV4KSB7XG4gICAgICAgIGNvbnN0IGJlZ2luID0gc2xpY2VJbmRleCAqIHNsaWNlU2l6ZTtcbiAgICAgICAgY29uc3QgZW5kID0gTWF0aC5taW4oYmVnaW4gKyBzbGljZVNpemUsIGJ5dGVzTGVuZ3RoKTtcblxuICAgICAgICBjb25zdCBieXRlcyA9IG5ldyBBcnJheShlbmQgLSBiZWdpbik7XG5cbiAgICAgICAgZm9yIChsZXQgb2Zmc2V0ID0gYmVnaW4sIGkgPSAwOyBvZmZzZXQgPCBlbmQ7ICsraSwgKytvZmZzZXQpIHtcbiAgICAgICAgICBieXRlc1tpXSA9IGJ5dGVDaGFyYWN0ZXJzW29mZnNldF0uY2hhckNvZGVBdCgwKTtcbiAgICAgICAgfVxuICAgICAgICBieXRlQXJyYXlzW3NsaWNlSW5kZXhdID0gbmV3IFVpbnQ4QXJyYXkoYnl0ZXMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5ldyBCbG9iKGJ5dGVBcnJheXMsIHsgdHlwZTogY29udGVudF90eXBlIH0pO1xuICAgIH1cblxuXG5cblxuICAgIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBiYXNlNjR0b0RiQmluYXJ5Rm9ybWF0KFxuICAgICAgdGV4dDogc3RyaW5nLFxuICAgICk6IFByb21pc2U8RGJCaW5hcnlGb3JtYXQ+IHtcbiAgICAgIGxldCByZXN1bHQ6IERiQmluYXJ5Rm9ybWF0O1xuXG4gICAgICByZXN1bHQgPSBhd2FpdCAoYXN5bmMgKCkgPT4ge1xuICAgICAgICBpZiAoQkxPQl9TVVBQT1JURURfSU5fU1FMSlMpIHtcbiAgICAgICAgICBjb25zdCBibG9iID0gYXdhaXQgYmFzZTY0dG9CbG9iKHRleHQpO1xuICAgICAgICAgIHJldHVybiBibG9iO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0ZXh0IGFzIGFueTtcbiAgICAgIH0pKCk7XG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG5cblxuICAgIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBkYkJpbmFyeUZvcm1hdFRvQmFzZTY0KFxuICAgICAgYmluYXJ5Rm9ybWF0OiBEYkJpbmFyeUZvcm1hdCxcbiAgICApOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgbGV0IHJlc3VsdDogc3RyaW5nO1xuXG4gICAgICByZXN1bHQgPSBhd2FpdCAoYXN5bmMgKCkgPT4ge1xuICAgICAgICBpZiAoQkxPQl9TVVBQT1JURURfSU5fU1FMSlMpIHtcbiAgICAgICAgICBjb25zdCB0ZXh0ID0gYXdhaXQgYmxvYlRvQmFzZTY0KGJpbmFyeUZvcm1hdCBhcyBhbnkpO1xuICAgICAgICAgIHJldHVybiB0ZXh0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBiaW5hcnlGb3JtYXQgYXMgYW55O1xuICAgICAgfSkoKTtcblxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuXG5cblxuICAgIGV4cG9ydCBhc3luYyBmdW5jdGlvbiB0ZXh0VG9EYkJpbmFyeUZvcm1hdChcbiAgICAgIHRleHQ6IHN0cmluZyxcbiAgICApOiBQcm9taXNlPERiQmluYXJ5Rm9ybWF0PiB7XG4gICAgICBsZXQgcmVzdWx0OiBEYkJpbmFyeUZvcm1hdDtcblxuICAgICAgcmVzdWx0ID0gYXdhaXQgKGFzeW5jICgpID0+IHtcbiAgICAgICAgaWYgKEJMT0JfU1VQUE9SVEVEX0lOX1NRTEpTKSB7XG4gICAgICAgICAgY29uc3QgYmxvYiA9IGF3YWl0IHRleHRUb0Jsb2IodGV4dCk7XG4gICAgICAgICAgcmV0dXJuIGJsb2I7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRleHQgYXMgYW55O1xuICAgICAgfSkoKTtcblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cblxuXG4gICAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRiQmluYXJ5Rm9ybWF0VG9UZXh0KFxuICAgICAgYmluYXJ5Rm9ybWF0OiBEYkJpbmFyeUZvcm1hdCxcbiAgICApOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgbGV0IHJlc3VsdDogc3RyaW5nO1xuXG4gICAgICByZXN1bHQgPSBhd2FpdCAoYXN5bmMgKCkgPT4ge1xuICAgICAgICBpZiAoQkxPQl9TVVBQT1JURURfSU5fU1FMSlMpIHtcbiAgICAgICAgICBjb25zdCB0ZXh0ID0gYXdhaXQgYmxvYlRvVGV4dChiaW5hcnlGb3JtYXQgYXMgYW55KTtcbiAgICAgICAgICByZXR1cm4gdGV4dDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYmluYXJ5Rm9ybWF0IGFzIGFueTtcbiAgICAgIH0pKCk7XG5cblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cblxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG5cblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuXG5cbiAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gZmlsZVRvQmxvYihmaWxlOiBGaWxlKSB7XG4gICAgICByZXR1cm4gbmV3IEJsb2IoW25ldyBVaW50OEFycmF5KGF3YWl0IGZpbGUuYXJyYXlCdWZmZXIoKSldLCB7XG4gICAgICAgIHR5cGU6IGZpbGUudHlwZSxcbiAgICAgIH0pO1xuICAgIH1cblxuXG5cbiAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gYmxvYlRvRmlsZShcbiAgICAgIGJsb2I6IEJsb2IsXG4gICAgICBuYW1lRm9yRmlsZTogc3RyaW5nID0gJ215LWZpbGUtbmFtZScsXG4gICAgKTogUHJvbWlzZTxGaWxlPiB7XG4gICAgICBpZiAoIW5hbWVGb3JGaWxlKSB7XG4gICAgICAgIG5hbWVGb3JGaWxlID0gJ25vbmFtZWZpbGUnICsgbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICB9XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICByZXR1cm4gbmV3IEZpbGUoW2Jsb2JdLCBuYW1lRm9yRmlsZSk7XG4gICAgfVxuXG5cblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cblxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG5cblxuICAgIGV4cG9ydCBhc3luYyBmdW5jdGlvbiB0ZXh0VG9CbG9iKFxuICAgICAgdGV4dDogc3RyaW5nLFxuICAgICAgdHlwZTogQ29yZU1vZGVscy5Db250ZW50VHlwZSA9ICd0ZXh0L3BsYWluJyxcbiAgICApOiBQcm9taXNlPEJsb2I+IHtcbiAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbdGV4dF0sIHsgdHlwZSB9KTtcbiAgICAgIHJldHVybiBibG9iO1xuICAgIH1cblxuXG5cbiAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gYmxvYlRvVGV4dChibG9iOiBCbG9iKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgIHJldHVybiBhd2FpdCBibG9iLnRleHQoKTtcbiAgICB9XG5cblxuXG4gICAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRleHRUb0ZpbGUoXG4gICAgICB0ZXh0OiBzdHJpbmcsXG4gICAgICBmaWxlUmVsYXRpdmVQYXRoT3JOYW1lOiBzdHJpbmcsXG4gICAgKTogUHJvbWlzZTxGaWxlPiB7XG5cbiAgICAgIGNvbnN0IGV4dCA9IHBhdGguZXh0bmFtZShmaWxlUmVsYXRpdmVQYXRoT3JOYW1lKTtcblxuICAgICAgY29uc3QgdHlwZSA9IENvcmVNb2RlbHMubWltZVR5cGVzW2V4dF07XG4gICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW3RleHRdLCB7IHR5cGUgfSk7XG4gICAgICBjb25zdCBmaWxlID0gYXdhaXQgYmxvYlRvRmlsZShibG9iLCBmaWxlUmVsYXRpdmVQYXRoT3JOYW1lKTtcblxuXG5cblxuXG4gICAgICByZXR1cm4gZmlsZTtcbiAgICB9XG5cblxuXG4gICAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpbGVUb1RleHQoZmlsZTogRmlsZSk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICByZXR1cm4gYXdhaXQgZmlsZS50ZXh0KCk7XG4gICAgfVxuXG5cblxuICAgIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBqc29uVG9CbG9iKGpzb25PYmo6IG9iamVjdCk6IFByb21pc2U8QmxvYj4ge1xuICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtKU09OLnN0cmluZ2lmeShqc29uT2JqLCBudWxsLCAyKV0sIHtcbiAgICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gYmxvYjtcbiAgICB9XG5cblxuXG4gICAgLyoqXG4gICAgICogVE9ETyBOT1QgVEVTVEVEXG4gICAgICovXG4gICAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJsb2JUb0pzb24oYmxvYjogQmxvYik6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShhd2FpdCBibG9iLnRleHQoKSk7XG4gICAgfVxuXG5cblxuICAgIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRCbG9iRnJvbSh1cmw6IHN0cmluZyk6IFByb21pc2U8QmxvYj4ge1xuICAgICAgY29uc3QgcmVzcG9uc2U6IEF4aW9zUmVzcG9uc2U8QmxvYj4gPSBhd2FpdCBheGlvcyh7XG4gICAgICAgIHVybCxcbiAgICAgICAgbWV0aG9kOiAnZ2V0JyxcbiAgICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYicsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH1cblxuICB9XG5cblxuXG4gIGV4cG9ydCBuYW1lc3BhY2UgY3NzIHtcblxuICAgIC8qKlxuICAgICAqXG4gICAgICogQHBhcmFtIHBpeGVsc0NzcyBwaXhlbHMgZXguIDEwMHB4XG4gICAgICogQHJldHVybnNcbiAgICAgKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gbnVtVmFsdWUocGl4ZWxzQ3NzOiBzdHJpbmcgfCBudW1iZXIpOiBudW1iZXIge1xuXG4gICAgICByZXR1cm4gcGFyc2VJbnQoXG4gICAgICAgIHBpeGVsc0Nzcz8udG9TdHJpbmcoKT8ucmVwbGFjZSgncHgnLCAnJyksXG5cblxuICAgICAgKTtcbiAgICB9XG5cbiAgfVxuXG59XG5cblxuXG5leHBvcnQgbmFtZXNwYWNlIFV0aWxzUHJvY2VzcyB7XG5cbiAgaW50ZXJmYWNlIFJlc29sdmVQcm9taXNlTXNnIHtcbiAgICAvKipcbiAgICAgKiB1bnRpbCB0aGlzIHN0cmluZyBpcyBpbiBvdXRwdXQgb2Ygc3Rkb3V0XG4gICAgICovXG4gICAgc3Rkb3V0Pzogc3RyaW5nIHwgc3RyaW5nW107XG4gICAgLyoqXG4gICAgICogdW50aWwgdGhpcyBzdHJpbmcgaXMgaW4gb3V0cHV0IG9mIHN0ZGVyclxuICAgICAqL1xuICAgIHN0ZGVycj86IHN0cmluZyB8IHN0cmluZ1tdO1xuICAgIC8qKlxuICAgICAqIGJ5IGRlZmF1bHQgb25seSByZXNvbHZlIHdoZW4gZXhpdCBjb2RlIGlzIDBcbiAgICAgKi9cbiAgICByZXNvbHZlQWZ0ZXJBbnlFeGl0Q29kZT86IGJvb2xlYW47XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIFByb2Nlc3NTdGFydE9wdGlvbnMge1xuICAgIC8qKlxuICAgICAqIGJ5IGRlZmF1bHQgaXMgcHJvY2Vzcy5jd2QoKTtcbiAgICAgKi9cbiAgICBjd2Q/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogYnkgZGVmYXVsdCBpcyBmYWxzZVxuICAgICAqL1xuICAgIHNob3dDb21tYW5kPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBNb2RpZnkgb3V0cHV0IGxpbmUgYnkgbGluZVxuICAgICAqL1xuICAgIG91dHB1dExpbmVSZXBsYWNlPzogKG91dHB1dExpbmVTdGRlck9yU3Rkb3V0OiBzdHJpbmcpID0+IHN0cmluZztcbiAgICByZXNvbHZlUHJvbWlzZU1zZz86IFJlc29sdmVQcm9taXNlTXNnO1xuICAgIC8qKlxuICAgICAqIFByZWZpeCBtZXNzYWdlcyBvdXRwdXQgZnJvbSBjaGlsZF9wcm9jZXNzXG4gICAgICovXG4gICAgcHJlZml4Pzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFRyeSBjb21tYW5kIGFnYWluIGFmdGVyIGZhaWwgYWZ0ZXIgbiBtaWxsaXNlY29uZHNcbiAgICAgKi9cbiAgICB0cnlBZ2FpbldoZW5GYWlsQWZ0ZXI/OiBudW1iZXI7XG4gICAgYXNrVG9UcnlBZ2Fpbk9uRXJyb3I/OiBib29sZWFuO1xuICAgIGV4aXRPbkVycm9yQ2FsbGJhY2s/OiAoY29kZTogbnVtYmVyKSA9PiB2b2lkO1xuICAgIC8qKlxuICAgICAqIFVzZSBiaWcgYnVmZmVyIGZvciBiaWcgd2VicGFjayBsb2dzXG4gICAgICogKGl0IG1heSBzbG93IGRvd24gc21hbGxlciBwcm9jZXNzZXMgZXhlY3V0aW9uKVxuICAgICAqL1xuICAgIGJpZ2dlckJ1ZmZlcj86IGJvb2xlYW47XG4gICAgaGlkZU91dHB1dD86IHtcbiAgICAgIHN0ZG91dD86IGJvb2xlYW47XG4gICAgICBzdGRlcnI/OiBib29sZWFuO1xuICAgIH07XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIFRPRE8gSU1QTEVNRU5UXG4gICAqIHN0YXJ0IGFzeW5jIG5vZGUgcHJvY2Vzc1xuICAgKi9cbiAgZXhwb3J0IGNvbnN0IHN0YXJ0QXN5bmMgPSBhc3luYyAoXG4gICAgY29tbWFuZDogc3RyaW5nLFxuICAgIGN3ZDogc3RyaW5nLFxuXG4gICAgb3B0aW9ucz86IE9taXQ8Q29yZU1vZGVscy5FeGVjdXRlT3B0aW9ucywgJ3RyeUFnYWluV2hlbkZhaWxBZnRlcic+LFxuICApOiBQcm9taXNlPHZvaWQ+ID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4gIC8qKlxuICAgKiBUaGlzIGxldCB5b3Ugc3RhcnQgY2hpbGQgcHJvY2VzcyBhbmQgcmVzb2x2ZSBwcm9taXNlIHdoZW4gc29tZVxuICAgKiBjb25kaXRpb24gaXMgbWV0LiBJdCBpcyB1c2VmdWwgZm9yIGV4YW1wbGUgd2hlbiB5b3Ugd2FudCB0byBzdGFydFxuICAgKiBwcm9jZXNzIGFuZCB3YWl0IHVudGlsIHNvbWUgb3V0cHV0IGlzIGluIHN0ZG91dCBvciBzdGRlcnIuXG4gICAqL1xuICBleHBvcnQgY29uc3Qgc3RhcnRBc3luY0NoaWxkUHJvY2Vzc0NvbW1hbmRVbnRpbCA9IGFzeW5jIChcbiAgICBjb21tYW5kOiBzdHJpbmcsXG4gICAgb3B0aW9uczoge1xuICAgICAgLyoqXG4gICAgICAgKiB0ZWxzIHdoZW4gdG8gcmVzb2x2ZSBwcm9taXNlXG4gICAgICAgKi9cbiAgICAgIHVudGlsT3B0aW9uczogUmVzb2x2ZVByb21pc2VNc2c7XG4gICAgICBkaXNwbGF5T3V0cHV0SW5QYXJlbnRQcm9jZXNzPzogYm9vbGVhbjtcbiAgICAgIHJlc29sdmVBZnRlckFueUV4aXRDb2RlPzogYm9vbGVhbjtcbiAgICAgIGN3ZD86IHN0cmluZztcbiAgICB9LFxuICApOiBQcm9taXNlPHZvaWQ+ID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgZXhwb3J0IGNvbnN0IGdldEdpdEJhc2hQYXRoID0gKCkgPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgLyoqXG4gICAqIFRPRE8gSU1QTEVNRU5UXG4gICAqIHN0YXJ0IGFzeW5jIG5vZGUgcHJvY2Vzc1xuICAgKi9cbiAgZXhwb3J0IGNvbnN0IHN0YXJ0SW5OZXdUZXJtaW5hbFdpbmRvdyA9IChcbiAgICBjb21tYW5kOiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IFBpY2s8UHJvY2Vzc1N0YXJ0T3B0aW9ucywgJ2N3ZCcgfCAnaGlkZU91dHB1dCc+LFxuICApID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuICBleHBvcnQgY29uc3QgZ2V0QmFzaE9yU2hlbGxOYW1lID0gKCk6XG4gICAgfCAnYnJvd3NlcidcbiAgICB8ICdjbWQnXG4gICAgfCAncG93ZXJzaGVsbCdcbiAgICB8ICdnaXRiYXNoJ1xuICAgIHwgJ2N5Z3dpbidcbiAgICB8ICd1bmtub3duJ1xuICAgIHwgJ2Jhc2gnXG4gICAgfCAnenNoJ1xuICAgIHwgJ2Zpc2gnXG4gICAgfCAnc2gnID0+IHtcblxuICAgIHJldHVybiAnYnJvd3Nlcic7XG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cbiAgLyoqXG4gICAqIEdldCBDUFUgYW5kIG1lbW9yeSB1c2FnZSBmb3IgYSBzaW5nbGUgUElELlxuICAgKi9cbiAgZXhwb3J0IGNvbnN0IGdldFVzYWdlRm9yUGlkID0gYXN5bmMgKFxuICAgIHBpZDogbnVtYmVyLFxuICApOiBQcm9taXNlPHsgY3B1OiBudW1iZXI7IG1lbW9yeUluR0I6IG51bWJlcjsgbWVtb3J5SW5NQjogbnVtYmVyIH0+ID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIGxpc3Qgb2YgZGlyZWN0IGNoaWxkIFBJRHMgZm9yIHRoZSBnaXZlbiBQSUQgb24gYSBVbml4LWxpa2Ugc3lzdGVtLlxuICAgKiBVc2VzIGBwcyAtbyBwaWQ9IC0tcHBpZCA8cGlkPmAgdG8gZmluZCBjaGlsZCBwcm9jZXNzZXMuXG4gICAqL1xuICBhc3luYyBmdW5jdGlvbiBnZXRDaGlsZFBpZHNVbml4KHBpZDogbnVtYmVyKTogUHJvbWlzZTxudW1iZXJbXT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBsaXN0IG9mIGRpcmVjdCBjaGlsZCBQSURzIGZvciB0aGUgZ2l2ZW4gUElEIG9uIFdpbmRvd3MuXG4gICAqIFVzZXMgYHdtaWMgcHJvY2VzcyB3aGVyZSAoUGFyZW50UHJvY2Vzc0lkPTxwaWQ+KSBnZXQgUHJvY2Vzc0lkYCB0byBmaW5kIGNoaWxkIHByb2Nlc3Nlcy5cbiAgICovXG4gIGFzeW5jIGZ1bmN0aW9uIGdldENoaWxkUGlkc1dpbmRvd3MocGlkOiBudW1iZXIpOiBQcm9taXNlPG51bWJlcltdPiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcm9zcy1wbGF0Zm9ybSBmdW5jdGlvbiB0byBsaXN0ICpkaXJlY3QqIGNoaWxkIFBJRHMgb2YgYSBnaXZlbiBQSUQuXG4gICAqIFVzZXMgdGhlIGFwcHJvcHJpYXRlIGNvbW1hbmQgZGVwZW5kaW5nIG9uIGBwcm9jZXNzLnBsYXRmb3JtYC5cbiAgICovXG4gIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRDaGlsZFBpZHNPbmNlKHBpZDogbnVtYmVyKTogUHJvbWlzZTxudW1iZXJbXT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgQ1BVIGFuZCBtZW1vcnkgdXNhZ2UgZm9yIHRoZSBjdXJyZW50IHByb2Nlc3MgKHRoZSBOb2RlLmpzIHByb2Nlc3MgaXRzZWxmKSxcbiAgICogcGx1cyBhbnkgY2hpbGQgcHJvY2Vzc2VzIHNwYXduZWQgYnkgaXQuXG4gICAqL1xuICBleHBvcnQgY29uc3QgZ2V0Q3VycmVudFByb2Nlc3NBbmRDaGlsZFVzYWdlID0gYXN5bmMgKCk6IFByb21pc2U8e1xuICAgIGN1cnJlbnQ6IHsgY3B1OiBudW1iZXI7IG1lbW9yeUluTUI6IG51bWJlciB9O1xuICAgIGNoaWxkcmVuOiBBcnJheTx7IHBpZDogbnVtYmVyOyBjcHU6IG51bWJlcjsgbWVtb3J5SW5NQjogbnVtYmVyIH0+O1xuICB9PiA9PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcbn1cblxuXG5cblxuZXhwb3J0IG5hbWVzcGFjZSBVdGlsc09zIHtcblxuICAvKipcbiAgICogY2hlY2sgaWYgc2NyaXB0IGlzIHJ1bm5pbmcgaW4gY2xpZW50IGJyb3dzZXJcbiAgICogKHdlYnNxbCBtb2RlbCAtPiBpcyBhbHNvIGNvbnNpZGVyZWQgYXMgYnJvd3NlclxuICAgKiBiZWNhdXNlIGl0IGlzIHJ1bm5pbmcgaW4gYnJvd3NlcilcbiAgICovXG4gIGV4cG9ydCBjb25zdCBpc1J1bm5pbmdJbkJyb3dzZXIgPSAoKTogYm9vbGVhbiA9PiB7XG4vKiAqL1xuLyogKi9cbiAgXG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG5cblxuXG4gIC8qKlxuICAgKiBjaGVjayBpZiBzY3JpcHQgaXMgcnVubmluZyBpbiBub2RlanNcbiAgICogKGJhY2tlbmQgc2NyaXB0IG9yIGVsZWN0cm9uIHNjcmlwdClcbiAgICovXG4gIGV4cG9ydCBjb25zdCBpc1J1bm5pbmdJbk5vZGUgPSAoKTogYm9vbGVhbiA9PiB7XG4vKiAqL1xuLyogKi9cbiAgXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xuXG5cblxuICAvKipcbiAgICogY2hlY2sgaWYgc2NyaXB0IGlzIHJ1bm5pbmcgc3BlY2lhbFxuICAgKiBicm93c2VyIG1vZGUgdGhhdCBoYXMgc3FsLmpzIGJhY2tlbmRcbiAgICogYW5kIGV4ZWN1dGVzIHNxbCBxdWVyaWVzIGluIGJyb3dzZXJcbiAgICovXG4gIGV4cG9ydCBjb25zdCBpc1J1bm5pbmdJbldlYlNRTCA9ICgpOiBib29sZWFuID0+IHtcbi8qICovXG4vKiAqL1xuICBcblxuLyogKi9cbi8qICovXG4gIFxuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcblxuXG5cbiAgLyoqXG4gICAqIGNoZWNrIHdoZXRoZXIgdGhlIGN1cnJlbnQgcHJvY2VzcyBpcyBydW5uaW5nIGluc2lkZVxuICAgKiBFbGVjdHJvbiBiYWNrZW5kIG9yIGJyb3dzZXIuXG4gICAqL1xuICBleHBvcnQgY29uc3QgaXNSdW5uaW5nSW5FbGVjdHJvbiA9ICgpOiBib29sZWFuID0+IHtcblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpZiAoXG4gICAgICB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgdHlwZW9mIHdpbmRvdy5wcm9jZXNzID09PSAnb2JqZWN0JyAmJlxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgd2luZG93LnByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJ1xuICAgICkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaWYgKFxuICAgICAgdHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmluZWQnICYmXG4gICAgICB0eXBlb2YgcHJvY2Vzcy52ZXJzaW9ucyA9PT0gJ29iamVjdCcgJiZcbiAgICAgICEhcHJvY2Vzcy52ZXJzaW9ucy5lbGVjdHJvblxuICAgICkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG5cbiAgICBpZiAoXG4gICAgICB0eXBlb2YgbmF2aWdhdG9yID09PSAnb2JqZWN0JyAmJlxuICAgICAgdHlwZW9mIG5hdmlnYXRvci51c2VyQWdlbnQgPT09ICdzdHJpbmcnICYmXG4gICAgICBuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ0VsZWN0cm9uJykgPj0gMFxuICAgICkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xuXG5cblxuICAvKipcbiAgICogQ2hlY2sgd2hldGhlciB0aGUgY3VycmVudCBwcm9jZXNzIGlzIHJ1bm5pbmcgaW5zaWRlXG4gICAqIGEgVmlzdWFsIFN0dWRpbyBDb2RlIGV4dGVuc2lvbi5cbiAgICovXG4gIGV4cG9ydCBjb25zdCBpc1J1bm5pbmdJblZzY29kZUV4dGVuc2lvbiA9ICgpOiBib29sZWFuID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgLyoqXG4gICAqIENoZWNrIHdldGhlciB0aGUgY3VycmVudCBwcm9jZXNzIGlzIHJ1bm5pbmcgaW5zaWRlXG4gICAqIHdpbmRvd3Mgc3Vic3lzdGVtIGZvciBsaW51eCAoV1NMKS5cbiAgICovXG4gIGV4cG9ydCBjb25zdCBpc1J1bm5pbmdJbldzbCA9ICgpOiBib29sZWFuID0+IHtcblxuICAgIHJldHVybiBmYWxzZTtcblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cblxuXG4gIGNvbnN0IGdldFByb2Nlc3NUcmVlID0gKCk6IFJlY29yZDxcbiAgICBudW1iZXIsXG4gICAgeyBwaWQ6IG51bWJlcjsgcHBpZDogbnVtYmVyOyBuYW1lOiBzdHJpbmcgfVxuICA+ID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cbiAgY29uc3QgZmluZEFuY2VzdG9yUHJvY2Vzc05hbWUgPSAodGFyZ2V0czogc3RyaW5nW10pOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cbiAgZXhwb3J0IGNvbnN0IGlzUnVubmluZ0luV2luZG93c1Bvd2VyU2hlbGwgPSAoKTogYm9vbGVhbiA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIGZpbmRBbmNlc3RvclByb2Nlc3NOYW1lKFsncG93ZXJzaGVsbC5leGUnLCAncHdzaC5leGUnXSkgIT09IHVuZGVmaW5lZFxuICAgICk7XG4gIH07XG5cbiAgZXhwb3J0IGNvbnN0IGlzUnVubmluZ0luV2luZG93c0NtZCA9ICgpOiBib29sZWFuID0+IHtcbiAgICByZXR1cm4gZmluZEFuY2VzdG9yUHJvY2Vzc05hbWUoWydjbWQuZXhlJ10pICE9PSB1bmRlZmluZWQ7XG4gIH07XG5cblxuXG4gIGV4cG9ydCBjb25zdCBpc1J1bm5pbmdJbkRvY2tlciA9ICgpOiBib29sZWFuID0+IHtcblxuICAgIHJldHVybiBmYWxzZTtcblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgZXhwb3J0IGNvbnN0IGlzUnVubmluZ0luTGludXhHcmFwaGljc0NhcGFibGVFbnZpcm9ubWVudCA9ICgpOiBib29sZWFuID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuICAvKipcbiAgICogQ2hlY2sgd2hldGhlciB0aGUgY3VycmVudCBwcm9jZXNzIGlzIHJ1bm5pbmcgaW4gQ0xJIG1vZGUuXG4gICAqL1xuICBleHBvcnQgY29uc3QgaXNSdW5uaW5nSW5DbGlNb2RlID0gKCk6IGJvb2xlYW4gPT4ge1xuXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4vKiAqL1xuLyogKi9cbiAgICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgLyoqXG4gICAqIENoZWNrIHdoZXRoZXIgdGhlIGN1cnJlbnQgcHJvY2VzcyBpcyBydW5uaW5nIGluIG1vY2hhIHRlc3QuXG4gICAqL1xuICBleHBvcnQgY29uc3QgaXNSdW5uaW5nSW5Nb2NoYVRlc3QgPSAoKTogYm9vbGVhbiA9PiB7XG5cbiAgICByZXR1cm4gZmFsc2U7XG5cbi8qICovXG4vKiAqL1xuICAgICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuICBjb25zdCBpc1BvcnRJblVzZU9uSG9zdCA9IChwb3J0OiBudW1iZXIsIGhvc3Q6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGEgZ2l2ZW4gcG9ydCBpcyBhbHJlYWR5IGluIHVzZSAoYm91bmQgYnkgYW5vdGhlciBwcm9jZXNzKS5cbiAgICpcbiAgICogQHBhcmFtIHBvcnQgLSBUaGUgcG9ydCBudW1iZXIgdG8gY2hlY2suXG4gICAqIEBwYXJhbSBob3N0IC0gVGhlIGhvc3RuYW1lIG9yIElQIGFkZHJlc3MgdG8gYmluZCB0byAoZGVmYXVsdDogJzEyNy4wLjAuMScpLlxuICAgKiBAcmV0dXJucyBQcm9taXNlPGJvb2xlYW4+IC0gUmVzb2x2ZXMgdG8gYHRydWVgIGlmIHRoZSBwb3J0IGlzIGluIHVzZSwgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gICAqL1xuICBleHBvcnQgY29uc3QgaXNQb3J0SW5Vc2UgPSBhc3luYyAoXG4gICAgcG9ydDogbnVtYmVyLFxuICAgIG9wdGlvbnM/OiB7XG4gICAgICAvKipcbiAgICAgICAqICcxMjcuMC4wLjEnIGV0Yy4uXG4gICAgICAgKi9cbiAgICAgIGNoZWNrRm9yU3BlY2lmaWNPbmx5SG9zdD86IHN0cmluZztcbiAgICB9LFxuICApOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG59XG5cblxuXG5leHBvcnQgbmFtZXNwYWNlIFV0aWxzU3RyaW5nIHtcblxuICBleHBvcnQgY29uc3Qga2ViYWJDYXNlTm9TcGxpdE51bWJlcnMgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIGlucHV0XG5cbiAgICAgICAgLnJlcGxhY2UoL1xccysvZywgJy0nKVxuXG4gICAgICAgIC5yZXBsYWNlKC8oW2EtejAtOV0pKFtBLVpdKS9nLCAnJDEtJDInKVxuXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgKTtcbiAgfTtcblxufVxuXG5cblxuLyoqXG4gKiBUYW9uIG1pZ3JhdGlvbiB1dGlsaXRpZXNcbiAqL1xuZXhwb3J0IG5hbWVzcGFjZSBVdGlsc01pZ3JhdGlvbnMge1xuICBleHBvcnQgY29uc3QgZ2V0VGltZXN0YW1wRnJvbUNsYXNzTmFtZSA9IChcbiAgICBjbGFzc05hbWU6IHN0cmluZyxcbiAgKTogbnVtYmVyIHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBbbWF5YmVUaW1lc3RhbXAxLCBtYXliZVRpbWVzdGFtcDJdID0gY2xhc3NOYW1lLnNwbGl0KCdfJykgfHwgW107XG5cbiAgICBjb25zdCB0aW1lc3RhbXAxID0gcGFyc2VJbnQobWF5YmVUaW1lc3RhbXAxKTtcbiAgICBjb25zdCB0aW1lc3RhbXAyID0gcGFyc2VJbnQobWF5YmVUaW1lc3RhbXAyKTtcbiAgICBjb25zdCB0aW1lc3RhbXAgPSAhXy5pc05hTih0aW1lc3RhbXAxKSA/IHRpbWVzdGFtcDEgOiB0aW1lc3RhbXAyO1xuICAgIHJldHVybiBpc1ZhbGlkVGltZXN0YW1wKHRpbWVzdGFtcCkgPyB0aW1lc3RhbXAgOiB2b2lkIDA7XG4gIH07XG5cbiAgZXhwb3J0IGNvbnN0IGdldEZvcm1hdHRlZFRpbWVzdGFtcEZyb21DbGFzc05hbWUgPSAoXG4gICAgY2xhc3NOYW1lOiBzdHJpbmcsXG4gICk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3QgdGltZXN0YW1wID0gZ2V0VGltZXN0YW1wRnJvbUNsYXNzTmFtZShjbGFzc05hbWUpO1xuICAgIGlmICghdGltZXN0YW1wKSB7XG4gICAgICByZXR1cm4gdm9pZCAwO1xuICAgIH1cbiAgICByZXR1cm4gZm9ybWF0VGltZXN0YW1wKHRpbWVzdGFtcCk7XG4gIH07XG5cbiAgZXhwb3J0IGNvbnN0IGZvcm1hdFRpbWVzdGFtcCA9ICh0aW1lc3RhbXA6IG51bWJlcik6IHN0cmluZyA9PiB7XG4gICAgY29uc3QgZGF0ZUZyb21UaW1lc3RhbXA6IERhdGUgPSBuZXcgRGF0ZSh0aW1lc3RhbXApO1xuICAgIHJldHVybiBgJHtkYXRlZm9ybWF0KGRhdGVGcm9tVGltZXN0YW1wLCAnZGQtbW0teXl5eSBISDpNTTpzcycpfWA7XG4gIH07XG5cbiAgZXhwb3J0IGNvbnN0IGlzVmFsaWRUaW1lc3RhbXAgPSAodmFsdWU6IGFueSk6IGJvb2xlYW4gPT4ge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gZmFsc2U7IC8vIE11c3QgYmUgYSBudW1iZXJcbiAgICB9XG5cbiAgICBjb25zdCBtaW5UaW1lc3RhbXAgPSAwOyAvLyBNaW5pbXVtIHBvc3NpYmxlIHRpbWVzdGFtcCAoVW5peCBlcG9jaClcbiAgICBjb25zdCBtYXhUaW1lc3RhbXAgPSA4NjQwMDAwMDAwMDAwMDAwOyAvLyBNYXggc2FmZSB0aW1lc3RhbXAgaW4gSlMgKHJlcHJlc2VudHMgeWVhciB+Mjc1NzYwKVxuXG4gICAgcmV0dXJuIHZhbHVlID49IG1pblRpbWVzdGFtcCAmJiB2YWx1ZSA8PSBtYXhUaW1lc3RhbXA7XG4gIH07XG59XG5cblxuXG5leHBvcnQgbmFtZXNwYWNlIFV0aWxzVGVybWluYWwge1xuXG4gIHR5cGUgU2VsZWN0QWN0aW9uQ2hvaWNlID0ge1xuICAgIFtjaG9pY2U6IHN0cmluZ106IHtcbiAgICAgIC8qKlxuICAgICAgICogVGl0bGUgb2YgdGhlIGNob2ljZVxuICAgICAgICovXG4gICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEFjdGlvbiB0byBleGVjdXRlXG4gICAgICAgKi9cbiAgICAgIGFjdGlvbj86ICgpID0+IGFueTtcbiAgICAgIC8qKlxuICAgICAgICogSWYgY2hvaWNlIGlzIHZpc2libGVcbiAgICAgICAqICBkZWZhdWx0OiB0cnVlXG4gICAgICAgKi9cbiAgICAgIHZpc2libGU/OiBib29sZWFuO1xuICAgIH07XG4gIH07XG5cblxuXG4gIGV4cG9ydCBjb25zdCB3YWl0ID0gKHNlY29uZDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICByZXNvbHZlKHZvaWQgMCk7XG4gICAgICB9LCBzZWNvbmQgKiAxMDAwKTtcbiAgICB9KTtcbiAgfTtcblxuXG5cbiAgZXhwb3J0IGNvbnN0IGNsZWFyQ29uc29sZSA9ICgpOiB2b2lkID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgY29uc3QgdHJhbnNmb3JtQ2hvaWNlcyA9IChcbiAgICBjaG9pY2VzOiBhbnksXG4gICk6IHsgbmFtZTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH1bXSA9PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuICBleHBvcnQgY29uc3QgbXVsdGlzZWxlY3QgPSBhc3luYyA8VCA9IHN0cmluZz4ob3B0aW9uczoge1xuICAgIHF1ZXN0aW9uOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogSWYgdHJ1ZSwgdGhlbiBvbmx5IG9uZSBjaG9pY2UgY2FuIGJlIHNlbGVjdGVkXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIHNlbGVjdCBpbnN0ZWFkXG4gICAgICovXG4gICAgb25seU9uZUNob2ljZT86IGJvb2xlYW47XG4gICAgY2hvaWNlczpcbiAgICAgIHwgeyBuYW1lOiBzdHJpbmc7IHZhbHVlOiBUIH1bXVxuICAgICAgfCB7IFtjaG9pY2U6IHN0cmluZ106IHsgbmFtZTogc3RyaW5nIH0gfTtcbiAgICBhdXRvY29tcGxldGU/OiBib29sZWFuO1xuICAgIGRlZmF1bHRTZWxlY3RlZD86IHN0cmluZ1tdO1xuICB9KTogUHJvbWlzZTxUW10+ID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuICAvKipcbiAgICogU2ltaWxhciB0byBzZWxlY3QgYnV0IGV4ZWN1dGVzIGFjdGlvbiBpZiBwcm92aWRlZFxuICAgKiBAcmV0dXJucyBzZWxlY3RlZCBhbmQgZXhlY3V0ZWQgdmFsdWVcbiAgICovXG4gIGV4cG9ydCBjb25zdCBtdWx0aXNlbGVjdEFjdGlvbkFuZEV4ZWN1dGUgPSBhc3luYyA8XG4gICAgQ0hPSUNFIGV4dGVuZHMgU2VsZWN0QWN0aW9uQ2hvaWNlID0gU2VsZWN0QWN0aW9uQ2hvaWNlLFxuICA+KFxuICAgIGNob2ljZXM6IENIT0lDRSxcbiAgICBvcHRpb25zPzoge1xuICAgICAgcXVlc3Rpb24/OiBzdHJpbmc7XG4gICAgICBhdXRvY29tcGxldGU/OiBib29sZWFuO1xuICAgICAgZGVmYXVsdFNlbGVjdGVkPzogc3RyaW5nO1xuICAgICAgaGludD86IHN0cmluZztcbiAgICAgIGV4ZWN1dGVBY3Rpb25zT25EZWZhdWx0PzogYm9vbGVhbjtcbiAgICB9LFxuICApID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuICAvKipcbiAgICogU2ltaWxhciB0byBzZWxlY3QgYnV0IGV4ZWN1dGVzIGFjdGlvbiBpZiBwcm92aWRlZFxuICAgKiBAcmV0dXJucyBzZWxlY3RlZCBhbmQgZXhlY3V0ZWQgdmFsdWVcbiAgICovXG4gIGV4cG9ydCBjb25zdCBzZWxlY3RBY3Rpb25BbmRFeGVjdXRlID0gYXN5bmMgPFxuICAgIENIT0lDRSBleHRlbmRzIFNlbGVjdEFjdGlvbkNob2ljZSA9IFNlbGVjdEFjdGlvbkNob2ljZSxcbiAgPihcbiAgICBjaG9pY2VzOiBDSE9JQ0UsXG4gICAgb3B0aW9ucz86IHtcbiAgICAgIHF1ZXN0aW9uPzogc3RyaW5nO1xuICAgICAgYXV0b2NvbXBsZXRlPzogYm9vbGVhbjtcbiAgICAgIGRlZmF1bHRTZWxlY3RlZD86IHN0cmluZztcbiAgICAgIGhpbnQ/OiBzdHJpbmc7XG4gICAgICBleGVjdXRlQWN0aW9uT25EZWZhdWx0PzogYm9vbGVhbjtcbiAgICB9LFxuICApID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgZXhwb3J0IGNvbnN0IHNlbGVjdCA9IGFzeW5jIDxUID0gc3RyaW5nPihvcHRpb25zOiB7XG4gICAgcXVlc3Rpb246IHN0cmluZztcbiAgICBjaG9pY2VzOlxuICAgICAgfCB7IG5hbWU6IHN0cmluZzsgdmFsdWU6IFQgfVtdXG4gICAgICB8IHsgW2Nob2ljZTogc3RyaW5nXTogeyBuYW1lOiBzdHJpbmcgfSB9O1xuICAgIGF1dG9jb21wbGV0ZT86IGJvb2xlYW47XG4gICAgZGVmYXVsdFNlbGVjdGVkPzogc3RyaW5nO1xuICAgIGhpbnQ/OiBzdHJpbmc7XG4gIH0pOiBQcm9taXNlPFQ+ID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cblxuXG5cbiAgZXhwb3J0IGNvbnN0IHBpcGVFbnRlclRvU3RkaW4gPSAoKTogdm9pZCA9PiB7XG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cblxuXG4gIGV4cG9ydCBjb25zdCBpbnB1dCA9IGFzeW5jICh7XG4gICAgZGVmYXVsdFZhbHVlLFxuICAgIHF1ZXN0aW9uLFxuICAgIHJlcXVpcmVkLCAvLyBUT0RPIHNvbWV0aGluZyBpcyB3ZXJpZCB3aXRoIHJlcXVpcmVkXG4gIH06IHtcbiAgICBkZWZhdWx0VmFsdWU/OiBzdHJpbmc7XG4gICAgcXVlc3Rpb246IHN0cmluZztcbiAgICByZXF1aXJlZD86IGJvb2xlYW47XG4gICAgdmFsaWRhdGU/OiAodmFsdWU6IHN0cmluZykgPT4gYm9vbGVhbjtcbiAgfSk6IFByb21pc2U8c3RyaW5nPiA9PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgZXhwb3J0IGNvbnN0IGNvbmZpcm0gPSBhc3luYyAob3B0aW9ucz86IHtcbiAgICAvKipcbiAgICAgKiBkZWZhdWx0OiBBcmUgeW91IHN1cmU/XG4gICAgICovXG4gICAgbWVzc2FnZT86IHN0cmluZztcbiAgICBjYWxsYmFja1RydWU/OiAoKSA9PiBhbnk7XG4gICAgY2FsbGJhY2tGYWxzZT86ICgpID0+IGFueTtcbiAgICAvKipcbiAgICAgKiBkZWZhdWx0OiB0cnVlXG4gICAgICovXG4gICAgZGVmYXVsdFZhbHVlPzogYm9vbGVhbjtcbiAgICBlbmdpbmU/OiAnaW5xdWlyZXItdG9nZ2xlJyB8ICdwcm9tcHRzJyB8ICdlbnF1aXJlcicgfCAnQGlucXVpcmVyL3Byb21wdHMnO1xuICB9KSA9PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgZXhwb3J0IGNvbnN0IHByZXNzQW55S2V5VG9Db250aW51ZUFzeW5jID0gKG9wdGlvbnM/OiB7XG4gICAgbWVzc2FnZT86IHN0cmluZztcbiAgfSk6IFByb21pc2U8dm9pZD4gPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBVdGlsc1Rlcm1pbmFsLnByZXNzQW55S2V5VG9Db250aW51ZUFzeW5jKClcbiAgICovXG4gIGV4cG9ydCBjb25zdCBwcmVzc0FueUtleSA9IChvcHRpb25zPzogeyBtZXNzYWdlPzogc3RyaW5nIH0pID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cblxuXG4gIGV4cG9ydCBjb25zdCBwcmV2aWV3TG9uZ0xpc3QgPSBhc3luYyAoXG4gICAgbGlzdDogc3RyaW5nIHwgc3RyaW5nW10sXG4gICAgbGlzdE5hbWUgPSAnTGlzdCcsXG4gICk6IFByb21pc2U8dm9pZD4gPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuICAvKipcbiAgICogRGlzcGxheXMgYSBsb25nIGxpc3QgaW4gdGhlIGNvbnNvbGUgdXNpbmcgYSBwYWdlciBsaWtlIGBsZXNzYC5cbiAgICogUmV0dXJucyBhIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSB1c2VyIGV4aXRzIHRoZSBwYWdlci5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGxpc3QgLSBUaGUgbG9uZyBzdHJpbmcgY29udGVudCB0byBkaXNwbGF5LlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgcGFnZXIgZXhpdHMuXG4gICAqL1xuICBleHBvcnQgY29uc3QgcHJldmlld0xvbmdMaXN0R2l0TG9nTGlrZSA9IChcbiAgICBsaXN0OiBzdHJpbmcgfCBzdHJpbmdbXSxcbiAgKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG59XG5cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPXRucC1jb3JlIGxpYi91dGlscy50cyJdfQ==