tnp-helpers 13.1.36 → 13.1.37

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 (181) hide show
  1. package/assets/shared/shared_folder_info.txt +1 -1
  2. package/browser/README.md +24 -24
  3. package/browser/esm2020/lib/angular.helper.mjs +87 -87
  4. package/browser/esm2020/lib/base-component.mjs +49 -49
  5. package/browser/esm2020/lib/base-formly-component.mjs +112 -112
  6. package/browser/esm2020/lib/condition-wait.mjs +45 -45
  7. package/browser/esm2020/lib/constants.mjs +8 -8
  8. package/browser/esm2020/lib/dual-component-ctrl.mjs +118 -118
  9. package/browser/esm2020/lib/firedev-models.mjs +3 -3
  10. package/browser/esm2020/lib/helpers-array-obj.mjs +82 -82
  11. package/browser/esm2020/lib/helpers-browser.mjs +46 -46
  12. package/browser/esm2020/lib/helpers-console-gui.mjs +9 -9
  13. package/browser/esm2020/lib/helpers-environment.mjs +32 -32
  14. package/browser/esm2020/lib/helpers-numbers.mjs +7 -7
  15. package/browser/esm2020/lib/helpers-strings-regexes.mjs +50 -50
  16. package/browser/esm2020/lib/helpers-strings.mjs +252 -252
  17. package/browser/esm2020/lib/helpers.mjs +285 -285
  18. package/browser/esm2020/lib/index.mjs +15 -15
  19. package/browser/esm2020/lib/long-press.directive.mjs +112 -112
  20. package/browser/esm2020/lib/project.mjs +429 -429
  21. package/browser/esm2020/lib/resize-service.mjs +21 -21
  22. package/browser/esm2020/public-api.mjs +1 -1
  23. package/browser/esm2020/tnp-helpers.mjs +4 -4
  24. package/browser/fesm2015/tnp-helpers.mjs +1686 -1686
  25. package/browser/fesm2020/tnp-helpers.mjs +1676 -1676
  26. package/browser/lib/angular.helper.d.ts +35 -35
  27. package/browser/lib/base-component.d.ts +16 -16
  28. package/browser/lib/base-formly-component.d.ts +30 -30
  29. package/browser/lib/condition-wait.d.ts +7 -7
  30. package/browser/lib/constants.d.ts +6 -6
  31. package/browser/lib/dual-component-ctrl.d.ts +24 -24
  32. package/browser/lib/firedev-models.d.ts +12 -12
  33. package/browser/lib/helpers-array-obj.d.ts +14 -14
  34. package/browser/lib/helpers-browser.d.ts +10 -10
  35. package/browser/lib/helpers-console-gui.d.ts +5 -5
  36. package/browser/lib/helpers-environment.d.ts +4 -4
  37. package/browser/lib/helpers-numbers.d.ts +2 -2
  38. package/browser/lib/helpers-strings-regexes.d.ts +27 -27
  39. package/browser/lib/helpers-strings.d.ts +49 -49
  40. package/browser/lib/helpers.d.ts +33 -33
  41. package/browser/lib/index.d.ts +11 -11
  42. package/browser/lib/long-press.directive.d.ts +24 -24
  43. package/browser/lib/project.d.ts +93 -93
  44. package/browser/lib/resize-service.d.ts +8 -8
  45. package/browser/tnp-helpers.d.ts +4 -4
  46. package/client/README.md +24 -24
  47. package/client/esm2020/lib/angular.helper.mjs +87 -87
  48. package/client/esm2020/lib/base-component.mjs +49 -49
  49. package/client/esm2020/lib/base-formly-component.mjs +112 -112
  50. package/client/esm2020/lib/condition-wait.mjs +45 -45
  51. package/client/esm2020/lib/constants.mjs +8 -8
  52. package/client/esm2020/lib/dual-component-ctrl.mjs +118 -118
  53. package/client/esm2020/lib/firedev-models.mjs +3 -3
  54. package/client/esm2020/lib/helpers-array-obj.mjs +82 -82
  55. package/client/esm2020/lib/helpers-browser.mjs +46 -46
  56. package/client/esm2020/lib/helpers-console-gui.mjs +9 -9
  57. package/client/esm2020/lib/helpers-environment.mjs +32 -32
  58. package/client/esm2020/lib/helpers-numbers.mjs +7 -7
  59. package/client/esm2020/lib/helpers-strings-regexes.mjs +50 -50
  60. package/client/esm2020/lib/helpers-strings.mjs +252 -252
  61. package/client/esm2020/lib/helpers.mjs +285 -285
  62. package/client/esm2020/lib/index.mjs +15 -15
  63. package/client/esm2020/lib/long-press.directive.mjs +112 -112
  64. package/client/esm2020/lib/project.mjs +429 -429
  65. package/client/esm2020/lib/resize-service.mjs +21 -21
  66. package/client/esm2020/public-api.mjs +1 -1
  67. package/client/esm2020/tnp-helpers.mjs +4 -4
  68. package/client/fesm2015/tnp-helpers.mjs +1686 -1686
  69. package/client/fesm2020/tnp-helpers.mjs +1676 -1676
  70. package/client/lib/angular.helper.d.ts +35 -35
  71. package/client/lib/base-component.d.ts +16 -16
  72. package/client/lib/base-formly-component.d.ts +30 -30
  73. package/client/lib/condition-wait.d.ts +7 -7
  74. package/client/lib/constants.d.ts +6 -6
  75. package/client/lib/dual-component-ctrl.d.ts +24 -24
  76. package/client/lib/firedev-models.d.ts +12 -12
  77. package/client/lib/helpers-array-obj.d.ts +14 -14
  78. package/client/lib/helpers-browser.d.ts +10 -10
  79. package/client/lib/helpers-console-gui.d.ts +5 -5
  80. package/client/lib/helpers-environment.d.ts +4 -4
  81. package/client/lib/helpers-numbers.d.ts +2 -2
  82. package/client/lib/helpers-strings-regexes.d.ts +27 -27
  83. package/client/lib/helpers-strings.d.ts +49 -49
  84. package/client/lib/helpers.d.ts +33 -33
  85. package/client/lib/index.d.ts +11 -11
  86. package/client/lib/long-press.directive.d.ts +24 -24
  87. package/client/lib/project.d.ts +93 -93
  88. package/client/lib/resize-service.d.ts +8 -8
  89. package/client/package.json +6 -6
  90. package/client/tnp-helpers.d.ts +4 -4
  91. package/index.d.ts +1 -1
  92. package/lib/angular.helper.d.ts +35 -35
  93. package/lib/angular.helper.js +3 -3
  94. package/lib/base-component.d.ts +13 -13
  95. package/lib/base-component.js +3 -3
  96. package/lib/base-formly-component.d.ts +27 -27
  97. package/lib/base-formly-component.js +3 -3
  98. package/lib/condition-wait.d.ts +8 -8
  99. package/lib/constants.d.ts +7 -7
  100. package/lib/dual-component-ctrl.d.ts +24 -24
  101. package/lib/dual-component-ctrl.js +3 -3
  102. package/lib/firedev-models.d.ts +13 -13
  103. package/lib/git-project.d.ts +52 -52
  104. package/lib/helpers-array-obj.d.ts +15 -15
  105. package/lib/helpers-browser.d.ts +11 -11
  106. package/lib/helpers-cli-tool.backend.d.ts +55 -55
  107. package/lib/helpers-console-gui.d.ts +17 -17
  108. package/lib/helpers-dependencies.backend.d.ts +11 -11
  109. package/lib/helpers-environment.d.ts +5 -5
  110. package/lib/helpers-file-folders.backend.d.ts +85 -85
  111. package/lib/helpers-git.backend.d.ts +50 -50
  112. package/lib/helpers-git.backend.js +16 -4
  113. package/lib/helpers-git.backend.js.map +1 -1
  114. package/lib/helpers-json5.backend.d.ts +16 -16
  115. package/lib/helpers-morphi-framework.backend.d.ts +4 -4
  116. package/lib/helpers-network.backend.d.ts +8 -8
  117. package/lib/helpers-npm.backend.d.ts +3 -3
  118. package/lib/helpers-numbers.d.ts +3 -3
  119. package/lib/helpers-path.backend.d.ts +7 -7
  120. package/lib/helpers-process.backend.d.ts +58 -58
  121. package/lib/helpers-strings-regexes.d.ts +28 -28
  122. package/lib/helpers-strings.d.ts +50 -50
  123. package/lib/helpers-system-terminal.backend.d.ts +5 -5
  124. package/lib/helpers-vscode.backend.d.ts +5 -5
  125. package/lib/helpers.d.ts +74 -74
  126. package/lib/index.d.ts +12 -12
  127. package/lib/long-press.directive.d.ts +22 -22
  128. package/lib/merge-helpers.backend.d.ts +23 -23
  129. package/lib/project.d.ts +96 -96
  130. package/lib/resize-service.d.ts +6 -6
  131. package/lib/ts-code/index.d.ts +1 -1
  132. package/lib/ts-code/ts-code-extractor.d.ts +14 -14
  133. package/lib/ts-code/ts-code-modifier.backend.d.ts +12 -12
  134. package/package.json +3 -3
  135. package/package.json_devDependencies.json +222 -222
  136. package/package.json_tnp.json5 +46 -46
  137. package/tmp-environment.json +10 -10
  138. package/websql/README.md +24 -24
  139. package/websql/esm2020/lib/angular.helper.mjs +87 -87
  140. package/websql/esm2020/lib/base-component.mjs +49 -49
  141. package/websql/esm2020/lib/base-formly-component.mjs +112 -112
  142. package/websql/esm2020/lib/condition-wait.mjs +45 -45
  143. package/websql/esm2020/lib/constants.mjs +8 -8
  144. package/websql/esm2020/lib/dual-component-ctrl.mjs +118 -118
  145. package/websql/esm2020/lib/firedev-models.mjs +3 -3
  146. package/websql/esm2020/lib/helpers-array-obj.mjs +82 -82
  147. package/websql/esm2020/lib/helpers-browser.mjs +46 -46
  148. package/websql/esm2020/lib/helpers-console-gui.mjs +9 -9
  149. package/websql/esm2020/lib/helpers-environment.mjs +32 -32
  150. package/websql/esm2020/lib/helpers-numbers.mjs +7 -7
  151. package/websql/esm2020/lib/helpers-strings-regexes.mjs +50 -50
  152. package/websql/esm2020/lib/helpers-strings.mjs +252 -252
  153. package/websql/esm2020/lib/helpers.mjs +285 -285
  154. package/websql/esm2020/lib/index.mjs +15 -15
  155. package/websql/esm2020/lib/long-press.directive.mjs +112 -112
  156. package/websql/esm2020/lib/project.mjs +429 -429
  157. package/websql/esm2020/lib/resize-service.mjs +21 -21
  158. package/websql/esm2020/public-api.mjs +1 -1
  159. package/websql/esm2020/tnp-helpers.mjs +4 -4
  160. package/websql/fesm2015/tnp-helpers.mjs +1686 -1686
  161. package/websql/fesm2020/tnp-helpers.mjs +1676 -1676
  162. package/websql/lib/angular.helper.d.ts +35 -35
  163. package/websql/lib/base-component.d.ts +16 -16
  164. package/websql/lib/base-formly-component.d.ts +30 -30
  165. package/websql/lib/condition-wait.d.ts +7 -7
  166. package/websql/lib/constants.d.ts +6 -6
  167. package/websql/lib/dual-component-ctrl.d.ts +24 -24
  168. package/websql/lib/firedev-models.d.ts +12 -12
  169. package/websql/lib/helpers-array-obj.d.ts +14 -14
  170. package/websql/lib/helpers-browser.d.ts +10 -10
  171. package/websql/lib/helpers-console-gui.d.ts +5 -5
  172. package/websql/lib/helpers-environment.d.ts +4 -4
  173. package/websql/lib/helpers-numbers.d.ts +2 -2
  174. package/websql/lib/helpers-strings-regexes.d.ts +27 -27
  175. package/websql/lib/helpers-strings.d.ts +49 -49
  176. package/websql/lib/helpers.d.ts +33 -33
  177. package/websql/lib/index.d.ts +11 -11
  178. package/websql/lib/long-press.directive.d.ts +24 -24
  179. package/websql/lib/project.d.ts +93 -93
  180. package/websql/lib/resize-service.d.ts +8 -8
  181. package/websql/tnp-helpers.d.ts +4 -4
@@ -1,113 +1,113 @@
1
- import { Directive, Input, Output, EventEmitter, HostBinding, HostListener } from '@angular/core'; /* */
2
- /* */
3
- /* */
4
- /* */
5
- /* */
6
- /* */
7
- /* */
8
- import { _ } from 'tnp-core/browser';
9
- import { Log, Level } from 'ng2-logger/browser';
10
- import * as i0 from "@angular/core";
11
- const log = Log.create(`[firedev-helpers] long-press`, Level.__NOTHING);
12
- export class LongPress {
13
- constructor() {
14
- this.pressDuration = 1000;
15
- this.onLongPress = new EventEmitter();
16
- this.onLongPressing = new EventEmitter();
17
- this.onLongPressEnd = new EventEmitter();
18
- this.mouseX = 0;
19
- this.mouseY = 0;
20
- this.allowTrigger = false;
21
- this.triggerEnd = _.debounce(() => {
22
- this.endPress();
23
- }, 500);
24
- }
25
- get press() { return this.pressing; }
26
- get longPress() { return this.longPressing; }
27
- onMouseDown(event) {
28
- log.d(`MOUSE DOWN `);
29
- if (event.which !== 1)
30
- return;
31
- this.allowTrigger = true;
32
- this.mouseX = event.clientX;
33
- this.mouseY = event.clientY;
34
- this.pressing = true;
35
- this.longPressing = false;
36
- this.timeout = setTimeout(() => {
37
- if (this.allowTrigger) {
38
- this.longPressing = true;
39
- log.d(`long pressing start pressDuration:${this.pressDuration} `);
40
- this.onLongPress.emit(event);
41
- this.loop(event);
42
- }
43
- }, this.pressDuration);
44
- this.loop(event);
45
- }
46
- onMouseMove(event) {
47
- if (this.pressing && !this.longPressing) {
48
- const xThres = (event.clientX - this.mouseX) > 10;
49
- const yThres = (event.clientY - this.mouseY) > 10;
50
- if (xThres || yThres) {
51
- this.endPress();
52
- }
53
- }
54
- }
55
- loop(event) {
56
- if (this.longPressing) {
57
- this.timeout = setTimeout(() => {
58
- log.d(`emil longpressing`);
59
- this.triggerEnd();
60
- this.onLongPressing.emit(event);
61
- this.loop(event);
62
- }, 50);
63
- }
64
- }
65
- endPress(emit = true) {
66
- this.allowTrigger = false;
67
- clearTimeout(this.timeout);
68
- this.longPressing = false;
69
- this.pressing = false;
70
- if (emit) {
71
- log.d(`EMIT END`);
72
- this.onLongPressEnd.emit(true);
73
- }
74
- else {
75
- log.d(`NOT EMIT END`);
76
- }
77
- }
78
- onMouseUp() {
79
- this.endPress(false);
80
- }
81
- }
82
- LongPress.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: LongPress, deps: [], target: i0.ɵɵFactoryTarget.Directive });
83
- LongPress.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: LongPress, selector: "[long-press]", inputs: { pressDuration: "pressDuration" }, outputs: { onLongPress: "onLongPress", onLongPressing: "onLongPressing", onLongPressEnd: "onLongPressEnd" }, host: { listeners: { "mousedown": "onMouseDown($event)", "mousemove": "onMouseMove($event)", "mouseup": "onMouseUp()" }, properties: { "class.press": "this.press", "class.longpress": "this.longPress" } }, ngImport: i0 });
84
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: LongPress, decorators: [{
85
- type: Directive,
86
- args: [{ selector: '[long-press]' }]
87
- }], propDecorators: { pressDuration: [{
88
- type: Input
89
- }], onLongPress: [{
90
- type: Output
91
- }], onLongPressing: [{
92
- type: Output
93
- }], onLongPressEnd: [{
94
- type: Output
95
- }], press: [{
96
- type: HostBinding,
97
- args: ['class.press']
98
- }], longPress: [{
99
- type: HostBinding,
100
- args: ['class.longpress']
101
- }], onMouseDown: [{
102
- type: HostListener,
103
- args: ['mousedown', ['$event']]
104
- }], onMouseMove: [{
105
- type: HostListener,
106
- args: ['mousemove', ['$event']]
107
- }], onMouseUp: [{
108
- type: HostListener,
109
- args: ['mouseup']
110
- }] } });
111
- ;
112
- ({}); // @--end-of-file-for-module=tnp-helpers lib/long-press.directive.ts
1
+ import { Directive, Input, Output, EventEmitter, HostBinding, HostListener } from '@angular/core'; /* */
2
+ /* */
3
+ /* */
4
+ /* */
5
+ /* */
6
+ /* */
7
+ /* */
8
+ import { _ } from 'tnp-core/browser';
9
+ import { Log, Level } from 'ng2-logger/browser';
10
+ import * as i0 from "@angular/core";
11
+ const log = Log.create(`[firedev-helpers] long-press`, Level.__NOTHING);
12
+ export class LongPress {
13
+ constructor() {
14
+ this.pressDuration = 1000;
15
+ this.onLongPress = new EventEmitter();
16
+ this.onLongPressing = new EventEmitter();
17
+ this.onLongPressEnd = new EventEmitter();
18
+ this.mouseX = 0;
19
+ this.mouseY = 0;
20
+ this.allowTrigger = false;
21
+ this.triggerEnd = _.debounce(() => {
22
+ this.endPress();
23
+ }, 500);
24
+ }
25
+ get press() { return this.pressing; }
26
+ get longPress() { return this.longPressing; }
27
+ onMouseDown(event) {
28
+ log.d(`MOUSE DOWN `);
29
+ if (event.which !== 1)
30
+ return;
31
+ this.allowTrigger = true;
32
+ this.mouseX = event.clientX;
33
+ this.mouseY = event.clientY;
34
+ this.pressing = true;
35
+ this.longPressing = false;
36
+ this.timeout = setTimeout(() => {
37
+ if (this.allowTrigger) {
38
+ this.longPressing = true;
39
+ log.d(`long pressing start pressDuration:${this.pressDuration} `);
40
+ this.onLongPress.emit(event);
41
+ this.loop(event);
42
+ }
43
+ }, this.pressDuration);
44
+ this.loop(event);
45
+ }
46
+ onMouseMove(event) {
47
+ if (this.pressing && !this.longPressing) {
48
+ const xThres = (event.clientX - this.mouseX) > 10;
49
+ const yThres = (event.clientY - this.mouseY) > 10;
50
+ if (xThres || yThres) {
51
+ this.endPress();
52
+ }
53
+ }
54
+ }
55
+ loop(event) {
56
+ if (this.longPressing) {
57
+ this.timeout = setTimeout(() => {
58
+ log.d(`emil longpressing`);
59
+ this.triggerEnd();
60
+ this.onLongPressing.emit(event);
61
+ this.loop(event);
62
+ }, 50);
63
+ }
64
+ }
65
+ endPress(emit = true) {
66
+ this.allowTrigger = false;
67
+ clearTimeout(this.timeout);
68
+ this.longPressing = false;
69
+ this.pressing = false;
70
+ if (emit) {
71
+ log.d(`EMIT END`);
72
+ this.onLongPressEnd.emit(true);
73
+ }
74
+ else {
75
+ log.d(`NOT EMIT END`);
76
+ }
77
+ }
78
+ onMouseUp() {
79
+ this.endPress(false);
80
+ }
81
+ }
82
+ LongPress.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: LongPress, deps: [], target: i0.ɵɵFactoryTarget.Directive });
83
+ LongPress.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: LongPress, selector: "[long-press]", inputs: { pressDuration: "pressDuration" }, outputs: { onLongPress: "onLongPress", onLongPressing: "onLongPressing", onLongPressEnd: "onLongPressEnd" }, host: { listeners: { "mousedown": "onMouseDown($event)", "mousemove": "onMouseMove($event)", "mouseup": "onMouseUp()" }, properties: { "class.press": "this.press", "class.longpress": "this.longPress" } }, ngImport: i0 });
84
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: LongPress, decorators: [{
85
+ type: Directive,
86
+ args: [{ selector: '[long-press]' }]
87
+ }], propDecorators: { pressDuration: [{
88
+ type: Input
89
+ }], onLongPress: [{
90
+ type: Output
91
+ }], onLongPressing: [{
92
+ type: Output
93
+ }], onLongPressEnd: [{
94
+ type: Output
95
+ }], press: [{
96
+ type: HostBinding,
97
+ args: ['class.press']
98
+ }], longPress: [{
99
+ type: HostBinding,
100
+ args: ['class.longpress']
101
+ }], onMouseDown: [{
102
+ type: HostListener,
103
+ args: ['mousedown', ['$event']]
104
+ }], onMouseMove: [{
105
+ type: HostListener,
106
+ args: ['mousemove', ['$event']]
107
+ }], onMouseUp: [{
108
+ type: HostListener,
109
+ args: ['mouseup']
110
+ }] } });
111
+ ;
112
+ ({}); // @--end-of-file-for-module=tnp-helpers lib/long-press.directive.ts
113
113
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9uZy1wcmVzcy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItYnVuZGxlL3RucC1oZWxwZXJzL3Byb2plY3RzL3RucC1oZWxwZXJzL3NyYy9saWIvbG9uZy1wcmVzcy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFJLFNBQVMsRUFBSSxLQUFLLEVBQUksTUFBTSxFQUFJLFlBQVksRUFBSSxXQUFXLEVBQUksWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDLENBQUEsS0FBSztBQUNuSCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFHTCxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckMsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUFDaEQsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyw4QkFBOEIsRUFDakQsS0FBSyxDQUFDLFNBQVMsQ0FDbEIsQ0FBQTtBQUdELE1BQU0sT0FBTyxTQUFTO0lBRHRCO1FBR1csa0JBQWEsR0FBVyxJQUFJLENBQUM7UUFFNUIsZ0JBQVcsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNwRCxtQkFBYyxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3ZELG1CQUFjLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFLekQsV0FBTSxHQUFXLENBQUMsQ0FBQztRQUNuQixXQUFNLEdBQVcsQ0FBQyxDQUFDO1FBUTNCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLGVBQVUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUMzQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbEIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFBO0tBb0VSO0lBN0VDLElB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USxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7O3VHQXpGVSxTQUFTOzJGQUFULFNBQVM7NEZBQVQsU0FBUztrQkFEckIsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUU7OEJBRzVCLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUksV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBU0gsS0FBSztzQkFEUixXQUFXO3VCQUFDLGFBQWE7Z0JBSXRCLFNBQVM7c0JBRFosV0FBVzt1QkFBQyxpQkFBaUI7Z0JBUzlCLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBMkJyQyxXQUFXO3NCQURWLFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQW9DckMsU0FBUztzQkFEUixZQUFZO3VCQUFDLFNBQVM7O0FBT3hCLENBQUM7QUFBQSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsb0VBQW9FIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgICBEaXJlY3RpdmUsICAgSW5wdXQsICAgT3V0cHV0LCAgIEV2ZW50RW1pdHRlciwgICBIb3N0QmluZGluZywgICBIb3N0TGlzdGVuZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJzsvKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuXG5cbmltcG9ydCB7IF8gfSBmcm9tICd0bnAtY29yZS9icm93c2VyJztcbmltcG9ydCB7IExvZywgTGV2ZWwgfSBmcm9tICduZzItbG9nZ2VyL2Jyb3dzZXInO1xuY29uc3QgbG9nID0gTG9nLmNyZWF0ZShgW2ZpcmVkZXYtaGVscGVyc10gbG9uZy1wcmVzc2BcbiAgLCBMZXZlbC5fX05PVEhJTkdcbilcblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW2xvbmctcHJlc3NdJyB9KVxuZXhwb3J0IGNsYXNzIExvbmdQcmVzcyB7XG5cbiAgQElucHV0KCkgcHJlc3NEdXJhdGlvbjogbnVtYmVyID0gMTAwMDtcblxuICBAT3V0cHV0KCkgb25Mb25nUHJlc3M6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25Mb25nUHJlc3Npbmc6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25Mb25nUHJlc3NFbmQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHByaXZhdGUgcHJlc3Npbmc6IGJvb2xlYW47XG4gIHByaXZhdGUgbG9uZ1ByZXNzaW5nOiBib29sZWFuO1xuICBwcml2YXRlIHRpbWVvdXQ6IGFueTtcbiAgcHJpdmF0ZSBtb3VzZVg6IG51bWJlciA9IDA7XG4gIHByaXZhdGUgbW91c2VZOiBudW1iZXIgPSAwO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MucHJlc3MnKVxuICBnZXQgcHJlc3MoKSB7IHJldHVybiB0aGlzLnByZXNzaW5nOyB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5sb25ncHJlc3MnKVxuICBnZXQgbG9uZ1ByZXNzKCkgeyByZXR1cm4gdGhpcy5sb25nUHJlc3Npbmc7IH1cblxuICBhbGxvd1RyaWdnZXIgPSBmYWxzZTtcbiAgdHJpZ2dlckVuZCA9IF8uZGVib3VuY2UoKCkgPT4ge1xuICAgIHRoaXMuZW5kUHJlc3MoKTtcbiAgfSwgNTAwKVxuXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlZG93bicsIFsnJGV2ZW50J10pXG4gIG9uTW91c2VEb3duKGV2ZW50KSB7XG5cbiAgICBsb2cuZChgTU9VU0UgRE9XTiBgKTtcblxuICAgIGlmIChldmVudC53aGljaCAhPT0gMSkgcmV0dXJuO1xuICAgIHRoaXMuYWxsb3dUcmlnZ2VyID0gdHJ1ZTtcblxuICAgIHRoaXMubW91c2VYID0gZXZlbnQuY2xpZW50WDtcbiAgICB0aGlzLm1vdXNlWSA9IGV2ZW50LmNsaWVudFk7XG5cbiAgICB0aGlzLnByZXNzaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmxvbmdQcmVzc2luZyA9IGZhbHNlO1xuXG4gICAgdGhpcy50aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5hbGxvd1RyaWdnZXIpIHtcbiAgICAgICAgdGhpcy5sb25nUHJlc3NpbmcgPSB0cnVlO1xuICAgICAgICBsb2cuZChgbG9uZyBwcmVzc2luZyBzdGFydCAgcHJlc3NEdXJhdGlvbjoke3RoaXMucHJlc3NEdXJhdGlvbn0gYCk7XG4gICAgICAgIHRoaXMub25Mb25nUHJlc3MuZW1pdChldmVudCk7XG4gICAgICAgIHRoaXMubG9vcChldmVudCk7XG4gICAgICB9XG4gICAgfSwgdGhpcy5wcmVzc0R1cmF0aW9uKTtcblxuICAgIHRoaXMubG9vcChldmVudCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdtb3VzZW1vdmUnLCBbJyRldmVudCddKVxuICBvbk1vdXNlTW92ZShldmVudCkge1xuICAgIGlmICh0aGlzLnByZXNzaW5nICYmICF0aGlzLmxvbmdQcmVzc2luZykge1xuICAgICAgY29uc3QgeFRocmVzID0gKGV2ZW50LmNsaWVudFggLSB0aGlzLm1vdXNlWCkgPiAxMDtcbiAgICAgIGNvbnN0IHlUaHJlcyA9IChldmVudC5jbGllbnRZIC0gdGhpcy5tb3VzZVkpID4gMTA7XG4gICAgICBpZiAoeFRocmVzIHx8IHlUaHJlcykge1xuICAgICAgICB0aGlzLmVuZFByZXNzKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbG9vcChldmVudCkge1xuICAgIGlmICh0aGlzLmxvbmdQcmVzc2luZykge1xuICAgICAgdGhpcy50aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGxvZy5kKGBlbWlsIGxvbmdwcmVzc2luZ2ApXG4gICAgICAgIHRoaXMudHJpZ2dlckVuZCgpO1xuICAgICAgICB0aGlzLm9uTG9uZ1ByZXNzaW5nLmVtaXQoZXZlbnQpO1xuICAgICAgICB0aGlzLmxvb3AoZXZlbnQpO1xuICAgICAgfSwgNTApO1xuICAgIH1cbiAgfVxuXG4gIGVuZFByZXNzKGVtaXQgPSB0cnVlKSB7XG4gICAgdGhpcy5hbGxvd1RyaWdnZXIgPSBmYWxzZTtcbiAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0KTtcbiAgICB0aGlzLmxvbmdQcmVzc2luZyA9IGZhbHNlO1xuICAgIHRoaXMucHJlc3NpbmcgPSBmYWxzZTtcbiAgICBpZiAoZW1pdCkge1xuICAgICAgbG9nLmQoYEVNSVQgRU5EYClcbiAgICAgIHRoaXMub25Mb25nUHJlc3NFbmQuZW1pdCh0cnVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9nLmQoYE5PVCBFTUlUIEVORGApXG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2V1cCcpXG4gIG9uTW91c2VVcCgpIHtcbiAgICB0aGlzLmVuZFByZXNzKGZhbHNlKTtcbiAgfVxuXG59XG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT10bnAtaGVscGVycyBsaWIvbG9uZy1wcmVzcy5kaXJlY3RpdmUudHMiXX0=