tnp-helpers 13.1.1 → 13.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app.d.ts +1 -1
- package/app.js +6 -6
- package/browser/README.md +24 -24
- package/browser/esm2020/lib/base-component.mjs +47 -47
- package/browser/esm2020/lib/base-formly-component.mjs +125 -125
- package/browser/esm2020/lib/condition-wait.mjs +53 -53
- package/browser/esm2020/lib/constants.mjs +6 -6
- package/browser/esm2020/lib/dual-component-ctrl.mjs +120 -120
- package/browser/esm2020/lib/helpers-array-obj.mjs +80 -80
- package/browser/esm2020/lib/helpers-environment.mjs +30 -30
- package/browser/esm2020/lib/helpers-numbers.mjs +5 -5
- package/browser/esm2020/lib/helpers-strings-regexes.mjs +48 -48
- package/browser/esm2020/lib/helpers-strings.mjs +257 -257
- package/browser/esm2020/lib/helpers.mjs +276 -276
- package/browser/esm2020/lib/index.mjs +14 -14
- package/browser/esm2020/lib/long-press.directive.mjs +111 -111
- package/browser/esm2020/lib/project.mjs +413 -413
- package/browser/esm2020/lib/resize-service.mjs +19 -19
- package/browser/esm2020/public-api.mjs +1 -1
- package/browser/esm2020/tnp-helpers.mjs +4 -4
- package/browser/fesm2015/tnp-helpers.mjs +1535 -1535
- package/browser/fesm2020/tnp-helpers.mjs +1527 -1527
- package/browser/lib/base-component.d.ts +17 -17
- package/browser/lib/base-formly-component.d.ts +31 -31
- package/browser/lib/condition-wait.d.ts +8 -8
- package/browser/lib/constants.d.ts +6 -6
- package/browser/lib/dual-component-ctrl.d.ts +25 -25
- package/browser/lib/helpers-array-obj.d.ts +15 -15
- package/browser/lib/helpers-environment.d.ts +5 -5
- package/browser/lib/helpers-numbers.d.ts +3 -3
- package/browser/lib/helpers-strings-regexes.d.ts +28 -28
- package/browser/lib/helpers-strings.d.ts +50 -50
- package/browser/lib/helpers.d.ts +28 -28
- package/browser/lib/index.d.ts +9 -9
- package/browser/lib/long-press.directive.d.ts +25 -25
- package/browser/lib/project.d.ts +91 -91
- package/browser/lib/resize-service.d.ts +9 -9
- package/browser/public-api.d.ts +1 -1
- package/browser/tnp-helpers.d.ts +5 -5
- package/client/README.md +24 -24
- package/client/esm2020/lib/base-component.mjs +47 -47
- package/client/esm2020/lib/base-formly-component.mjs +125 -125
- package/client/esm2020/lib/condition-wait.mjs +53 -53
- package/client/esm2020/lib/constants.mjs +6 -6
- package/client/esm2020/lib/dual-component-ctrl.mjs +120 -120
- package/client/esm2020/lib/helpers-array-obj.mjs +80 -80
- package/client/esm2020/lib/helpers-environment.mjs +30 -30
- package/client/esm2020/lib/helpers-numbers.mjs +5 -5
- package/client/esm2020/lib/helpers-strings-regexes.mjs +48 -48
- package/client/esm2020/lib/helpers-strings.mjs +257 -257
- package/client/esm2020/lib/helpers.mjs +276 -276
- package/client/esm2020/lib/index.mjs +14 -14
- package/client/esm2020/lib/long-press.directive.mjs +111 -111
- package/client/esm2020/lib/project.mjs +413 -413
- package/client/esm2020/lib/resize-service.mjs +19 -19
- package/client/esm2020/public-api.mjs +1 -1
- package/client/esm2020/tnp-helpers.mjs +4 -4
- package/client/fesm2015/tnp-helpers.mjs +1535 -1535
- package/client/fesm2020/tnp-helpers.mjs +1527 -1527
- package/client/lib/base-component.d.ts +17 -17
- package/client/lib/base-formly-component.d.ts +31 -31
- package/client/lib/condition-wait.d.ts +8 -8
- package/client/lib/constants.d.ts +6 -6
- package/client/lib/dual-component-ctrl.d.ts +25 -25
- package/client/lib/helpers-array-obj.d.ts +15 -15
- package/client/lib/helpers-environment.d.ts +5 -5
- package/client/lib/helpers-numbers.d.ts +3 -3
- package/client/lib/helpers-strings-regexes.d.ts +28 -28
- package/client/lib/helpers-strings.d.ts +50 -50
- package/client/lib/helpers.d.ts +28 -28
- package/client/lib/index.d.ts +9 -9
- package/client/lib/long-press.directive.d.ts +25 -25
- package/client/lib/project.d.ts +91 -91
- package/client/lib/resize-service.d.ts +9 -9
- package/client/public-api.d.ts +1 -1
- package/client/tnp-helpers.d.ts +5 -5
- package/index.d.ts +1 -1
- package/index.js +5 -5
- package/lib/angular.helper.d.ts +22 -22
- package/lib/angular.helper.js +50 -50
- package/lib/base-component.d.ts +1 -1
- package/lib/base-component.js +6 -6
- package/lib/base-formly-component.d.ts +1 -1
- package/lib/base-formly-component.js +6 -6
- package/lib/condition-wait.d.ts +8 -8
- package/lib/condition-wait.js +94 -94
- package/lib/constants.d.ts +6 -6
- package/lib/constants.js +10 -10
- package/lib/dual-component-ctrl.d.ts +1 -1
- package/lib/dual-component-ctrl.js +6 -6
- package/lib/git-project.d.ts +44 -44
- package/lib/git-project.js +195 -195
- package/lib/helpers-array-obj.d.ts +15 -15
- package/lib/helpers-array-obj.js +88 -88
- package/lib/helpers-cli-tool.backend.d.ts +45 -45
- package/lib/helpers-cli-tool.backend.js +293 -293
- package/lib/helpers-dependencies.backend.d.ts +11 -11
- package/lib/helpers-dependencies.backend.js +105 -105
- package/lib/helpers-environment.d.ts +5 -5
- package/lib/helpers-environment.js +35 -35
- package/lib/helpers-file-folders.backend.d.ts +84 -84
- package/lib/helpers-file-folders.backend.js +736 -736
- package/lib/helpers-git.backend.d.ts +35 -35
- package/lib/helpers-git.backend.js +541 -545
- package/lib/helpers-git.backend.js.map +1 -1
- package/lib/helpers-json5.backend.d.ts +16 -16
- package/lib/helpers-json5.backend.js +70 -70
- package/lib/helpers-morphi-framework.backend.d.ts +4 -4
- package/lib/helpers-morphi-framework.backend.js +49 -49
- package/lib/helpers-network.backend.d.ts +8 -8
- package/lib/helpers-network.backend.js +48 -48
- package/lib/helpers-npm.backend.d.ts +3 -3
- package/lib/helpers-npm.backend.js +17 -17
- package/lib/helpers-numbers.d.ts +3 -3
- package/lib/helpers-numbers.js +11 -11
- package/lib/helpers-path.backend.d.ts +7 -7
- package/lib/helpers-path.backend.js +36 -36
- package/lib/helpers-process.backend.d.ts +57 -57
- package/lib/helpers-process.backend.js +529 -529
- package/lib/helpers-process.backend.js.map +1 -1
- package/lib/helpers-strings-regexes.d.ts +28 -28
- package/lib/helpers-strings-regexes.js +60 -60
- package/lib/helpers-strings.d.ts +50 -50
- package/lib/helpers-strings.js +265 -265
- package/lib/helpers-system-terminal.backend.d.ts +5 -5
- package/lib/helpers-system-terminal.backend.js +53 -53
- package/lib/helpers.d.ts +67 -67
- package/lib/helpers.js +391 -391
- package/lib/index.d.ts +6 -6
- package/lib/index.js +19 -19
- package/lib/long-press.directive.d.ts +22 -22
- package/lib/long-press.directive.js +141 -141
- package/lib/merge-helpers.backend.d.ts +23 -23
- package/lib/merge-helpers.backend.js +108 -108
- package/lib/project.d.ts +94 -94
- package/lib/project.js +422 -422
- package/lib/resize-service.d.ts +6 -6
- package/lib/resize-service.js +24 -24
- package/lib/ts-code/index.d.ts +1 -1
- package/lib/ts-code/index.js +7 -7
- package/lib/ts-code/ts-code-extractor.d.ts +14 -14
- package/lib/ts-code/ts-code-extractor.js +46 -46
- package/lib/ts-code/ts-code-modifier.backend.d.ts +12 -12
- package/lib/ts-code/ts-code-modifier.backend.js +70 -70
- package/package.json +5 -5
- package/package.json_devDependencies.json +222 -222
- package/package.json_tnp.json5 +41 -41
- package/tmp-environment.json +36 -35
- package/websql/README.md +24 -24
- package/websql/esm2020/lib/base-component.mjs +47 -47
- package/websql/esm2020/lib/base-formly-component.mjs +125 -125
- package/websql/esm2020/lib/condition-wait.mjs +53 -53
- package/websql/esm2020/lib/constants.mjs +6 -6
- package/websql/esm2020/lib/dual-component-ctrl.mjs +120 -120
- package/websql/esm2020/lib/helpers-array-obj.mjs +80 -80
- package/websql/esm2020/lib/helpers-environment.mjs +30 -30
- package/websql/esm2020/lib/helpers-numbers.mjs +5 -5
- package/websql/esm2020/lib/helpers-strings-regexes.mjs +48 -48
- package/websql/esm2020/lib/helpers-strings.mjs +257 -257
- package/websql/esm2020/lib/helpers.mjs +276 -276
- package/websql/esm2020/lib/index.mjs +14 -14
- package/websql/esm2020/lib/long-press.directive.mjs +111 -111
- package/websql/esm2020/lib/project.mjs +413 -413
- package/websql/esm2020/lib/resize-service.mjs +19 -19
- package/websql/esm2020/public-api.mjs +1 -1
- package/websql/esm2020/tnp-helpers.mjs +4 -4
- package/websql/fesm2015/tnp-helpers.mjs +1535 -1535
- package/websql/fesm2020/tnp-helpers.mjs +1527 -1527
- package/websql/lib/base-component.d.ts +17 -17
- package/websql/lib/base-formly-component.d.ts +31 -31
- package/websql/lib/condition-wait.d.ts +8 -8
- package/websql/lib/constants.d.ts +6 -6
- package/websql/lib/dual-component-ctrl.d.ts +25 -25
- package/websql/lib/helpers-array-obj.d.ts +15 -15
- package/websql/lib/helpers-environment.d.ts +5 -5
- package/websql/lib/helpers-numbers.d.ts +3 -3
- package/websql/lib/helpers-strings-regexes.d.ts +28 -28
- package/websql/lib/helpers-strings.d.ts +50 -50
- package/websql/lib/helpers.d.ts +28 -28
- package/websql/lib/index.d.ts +9 -9
- package/websql/lib/long-press.directive.d.ts +25 -25
- package/websql/lib/project.d.ts +91 -91
- package/websql/lib/resize-service.d.ts +9 -9
- package/websql/public-api.d.ts +1 -1
- package/websql/tnp-helpers.d.ts +5 -5
|
@@ -1,112 +1,112 @@
|
|
|
1
|
-
import { Directive, Input, Output, EventEmitter, HostBinding, HostListener } from '@angular/core'; /* */
|
|
2
|
-
/* */
|
|
3
|
-
/* */
|
|
4
|
-
/* */
|
|
5
|
-
/* */
|
|
6
|
-
/* */
|
|
7
|
-
/* */
|
|
8
|
-
import { _ } from 'tnp-core/websql';
|
|
9
|
-
import { Log, Level } from 'ng2-logger/websql';
|
|
10
|
-
import * as i0 from "@angular/core";
|
|
11
|
-
const log = Log.create(`[tnp-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
|
-
// don't do right/middle clicks
|
|
29
|
-
log.d(`MOUSE DOWN `);
|
|
30
|
-
if (event.which !== 1)
|
|
31
|
-
return;
|
|
32
|
-
this.allowTrigger = true;
|
|
33
|
-
this.mouseX = event.clientX;
|
|
34
|
-
this.mouseY = event.clientY;
|
|
35
|
-
this.pressing = true;
|
|
36
|
-
this.longPressing = false;
|
|
37
|
-
this.timeout = setTimeout(() => {
|
|
38
|
-
if (this.allowTrigger) {
|
|
39
|
-
this.longPressing = true;
|
|
40
|
-
log.d(`long pressing start pressDuration:${this.pressDuration} `);
|
|
41
|
-
this.onLongPress.emit(event);
|
|
42
|
-
this.loop(event);
|
|
43
|
-
}
|
|
44
|
-
}, this.pressDuration);
|
|
45
|
-
this.loop(event);
|
|
46
|
-
}
|
|
47
|
-
onMouseMove(event) {
|
|
48
|
-
if (this.pressing && !this.longPressing) {
|
|
49
|
-
const xThres = (event.clientX - this.mouseX) > 10;
|
|
50
|
-
const yThres = (event.clientY - this.mouseY) > 10;
|
|
51
|
-
if (xThres || yThres) {
|
|
52
|
-
this.endPress();
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
loop(event) {
|
|
57
|
-
if (this.longPressing) {
|
|
58
|
-
this.timeout = setTimeout(() => {
|
|
59
|
-
log.d(`emil longpressing`);
|
|
60
|
-
this.triggerEnd();
|
|
61
|
-
this.onLongPressing.emit(event);
|
|
62
|
-
this.loop(event);
|
|
63
|
-
}, 50);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
endPress(emit = true) {
|
|
67
|
-
this.allowTrigger = false;
|
|
68
|
-
clearTimeout(this.timeout);
|
|
69
|
-
this.longPressing = false;
|
|
70
|
-
this.pressing = false;
|
|
71
|
-
if (emit) {
|
|
72
|
-
log.d(`EMIT END`);
|
|
73
|
-
this.onLongPressEnd.emit(true);
|
|
74
|
-
}
|
|
75
|
-
else {
|
|
76
|
-
log.d(`NOT EMIT END`);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
onMouseUp() {
|
|
80
|
-
this.endPress(false);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
LongPress.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.
|
|
84
|
-
LongPress.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.
|
|
85
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.
|
|
86
|
-
type: Directive,
|
|
87
|
-
args: [{ selector: '[long-press]' }]
|
|
88
|
-
}], propDecorators: { pressDuration: [{
|
|
89
|
-
type: Input
|
|
90
|
-
}], onLongPress: [{
|
|
91
|
-
type: Output
|
|
92
|
-
}], onLongPressing: [{
|
|
93
|
-
type: Output
|
|
94
|
-
}], onLongPressEnd: [{
|
|
95
|
-
type: Output
|
|
96
|
-
}], press: [{
|
|
97
|
-
type: HostBinding,
|
|
98
|
-
args: ['class.press']
|
|
99
|
-
}], longPress: [{
|
|
100
|
-
type: HostBinding,
|
|
101
|
-
args: ['class.longpress']
|
|
102
|
-
}], onMouseDown: [{
|
|
103
|
-
type: HostListener,
|
|
104
|
-
args: ['mousedown', ['$event']]
|
|
105
|
-
}], onMouseMove: [{
|
|
106
|
-
type: HostListener,
|
|
107
|
-
args: ['mousemove', ['$event']]
|
|
108
|
-
}], onMouseUp: [{
|
|
109
|
-
type: HostListener,
|
|
110
|
-
args: ['mouseup']
|
|
111
|
-
}] } });
|
|
1
|
+
import { Directive, Input, Output, EventEmitter, HostBinding, HostListener } from '@angular/core'; /* */
|
|
2
|
+
/* */
|
|
3
|
+
/* */
|
|
4
|
+
/* */
|
|
5
|
+
/* */
|
|
6
|
+
/* */
|
|
7
|
+
/* */
|
|
8
|
+
import { _ } from 'tnp-core/websql';
|
|
9
|
+
import { Log, Level } from 'ng2-logger/websql';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
const log = Log.create(`[tnp-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
|
+
// don't do right/middle clicks
|
|
29
|
+
log.d(`MOUSE DOWN `);
|
|
30
|
+
if (event.which !== 1)
|
|
31
|
+
return;
|
|
32
|
+
this.allowTrigger = true;
|
|
33
|
+
this.mouseX = event.clientX;
|
|
34
|
+
this.mouseY = event.clientY;
|
|
35
|
+
this.pressing = true;
|
|
36
|
+
this.longPressing = false;
|
|
37
|
+
this.timeout = setTimeout(() => {
|
|
38
|
+
if (this.allowTrigger) {
|
|
39
|
+
this.longPressing = true;
|
|
40
|
+
log.d(`long pressing start pressDuration:${this.pressDuration} `);
|
|
41
|
+
this.onLongPress.emit(event);
|
|
42
|
+
this.loop(event);
|
|
43
|
+
}
|
|
44
|
+
}, this.pressDuration);
|
|
45
|
+
this.loop(event);
|
|
46
|
+
}
|
|
47
|
+
onMouseMove(event) {
|
|
48
|
+
if (this.pressing && !this.longPressing) {
|
|
49
|
+
const xThres = (event.clientX - this.mouseX) > 10;
|
|
50
|
+
const yThres = (event.clientY - this.mouseY) > 10;
|
|
51
|
+
if (xThres || yThres) {
|
|
52
|
+
this.endPress();
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
loop(event) {
|
|
57
|
+
if (this.longPressing) {
|
|
58
|
+
this.timeout = setTimeout(() => {
|
|
59
|
+
log.d(`emil longpressing`);
|
|
60
|
+
this.triggerEnd();
|
|
61
|
+
this.onLongPressing.emit(event);
|
|
62
|
+
this.loop(event);
|
|
63
|
+
}, 50);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
endPress(emit = true) {
|
|
67
|
+
this.allowTrigger = false;
|
|
68
|
+
clearTimeout(this.timeout);
|
|
69
|
+
this.longPressing = false;
|
|
70
|
+
this.pressing = false;
|
|
71
|
+
if (emit) {
|
|
72
|
+
log.d(`EMIT END`);
|
|
73
|
+
this.onLongPressEnd.emit(true);
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
log.d(`NOT EMIT END`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
onMouseUp() {
|
|
80
|
+
this.endPress(false);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
LongPress.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: LongPress, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
84
|
+
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 });
|
|
85
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: LongPress, decorators: [{
|
|
86
|
+
type: Directive,
|
|
87
|
+
args: [{ selector: '[long-press]' }]
|
|
88
|
+
}], propDecorators: { pressDuration: [{
|
|
89
|
+
type: Input
|
|
90
|
+
}], onLongPress: [{
|
|
91
|
+
type: Output
|
|
92
|
+
}], onLongPressing: [{
|
|
93
|
+
type: Output
|
|
94
|
+
}], onLongPressEnd: [{
|
|
95
|
+
type: Output
|
|
96
|
+
}], press: [{
|
|
97
|
+
type: HostBinding,
|
|
98
|
+
args: ['class.press']
|
|
99
|
+
}], longPress: [{
|
|
100
|
+
type: HostBinding,
|
|
101
|
+
args: ['class.longpress']
|
|
102
|
+
}], onMouseDown: [{
|
|
103
|
+
type: HostListener,
|
|
104
|
+
args: ['mousedown', ['$event']]
|
|
105
|
+
}], onMouseMove: [{
|
|
106
|
+
type: HostListener,
|
|
107
|
+
args: ['mousemove', ['$event']]
|
|
108
|
+
}], onMouseUp: [{
|
|
109
|
+
type: HostListener,
|
|
110
|
+
args: ['mouseup']
|
|
111
|
+
}] } });
|
|
112
112
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9uZy1wcmVzcy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItYnVuZGxlLXdlYnNxbC90bnAtaGVscGVycy9wcm9qZWN0cy90bnAtaGVscGVycy9zcmMvbGliL2xvbmctcHJlc3MuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBSSxTQUFTLEVBQUksS0FBSyxFQUFJLE1BQU0sRUFBSSxZQUFZLEVBQUksV0FBVyxFQUFJLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQyxDQUFBLEtBQUs7QUFDbkgsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBR0wsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BDLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBQy9DLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsMEJBQTBCLEVBQzdDLEtBQUssQ0FBQyxTQUFTLENBQ2xCLENBQUE7QUFHRCxNQUFNLE9BQU8sU0FBUztJQUR0QjtRQUdXLGtCQUFhLEdBQVcsSUFBSSxDQUFDO1FBRTVCLGdCQUFXLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDcEQsbUJBQWMsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN2RCxtQkFBYyxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBS3pELFdBQU0sR0FBVyxDQUFDLENBQUM7UUFDbkIsV0FBTSxHQUFXLENBQUMsQ0FBQztRQVEzQixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQixlQUFVLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDM0IsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2xCLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQTtLQW9FUjtJ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UztRQUNQLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkIsQ0FBQzs7dUdBekZVLFNBQVM7MkZBQVQsU0FBUzs0RkFBVCxTQUFTO2tCQURyQixTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRTs4QkFHNUIsYUFBYTtzQkFBckIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFTSCxLQUFLO3NCQURSLFdBQVc7dUJBQUMsYUFBYTtnQkFJdEIsU0FBUztzQkFEWixXQUFXO3VCQUFDLGlCQUFpQjtnQkFTOUIsV0FBVztzQkFEVixZQUFZO3VCQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkEyQnJDLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBb0NyQyxTQUFTO3NCQURSLFlBQVk7dUJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ICAgRGlyZWN0aXZlLCAgIElucHV0LCAgIE91dHB1dCwgICBFdmVudEVtaXR0ZXIsICAgSG9zdEJpbmRpbmcsICAgSG9zdExpc3RlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7LyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cblxuXG5pbXBvcnQgeyBfIH0gZnJvbSAndG5wLWNvcmUvd2Vic3FsJztcbmltcG9ydCB7IExvZywgTGV2ZWwgfSBmcm9tICduZzItbG9nZ2VyL3dlYnNxbCc7XG5jb25zdCBsb2cgPSBMb2cuY3JlYXRlKGBbdG5wLWhlbHBlcnNdIGxvbmctcHJlc3NgXG4gICwgTGV2ZWwuX19OT1RISU5HXG4pXG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1tsb25nLXByZXNzXScgfSlcbmV4cG9ydCBjbGFzcyBMb25nUHJlc3Mge1xuXG4gIEBJbnB1dCgpIHByZXNzRHVyYXRpb246IG51bWJlciA9IDEwMDA7XG5cbiAgQE91dHB1dCgpIG9uTG9uZ1ByZXNzOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uTG9uZ1ByZXNzaW5nOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uTG9uZ1ByZXNzRW5kOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwcml2YXRlIHByZXNzaW5nOiBib29sZWFuO1xuICBwcml2YXRlIGxvbmdQcmVzc2luZzogYm9vbGVhbjtcbiAgcHJpdmF0ZSB0aW1lb3V0OiBhbnk7XG4gIHByaXZhdGUgbW91c2VYOiBudW1iZXIgPSAwO1xuICBwcml2YXRlIG1vdXNlWTogbnVtYmVyID0gMDtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnByZXNzJylcbiAgZ2V0IHByZXNzKCkgeyByZXR1cm4gdGhpcy5wcmVzc2luZzsgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MubG9uZ3ByZXNzJylcbiAgZ2V0IGxvbmdQcmVzcygpIHsgcmV0dXJuIHRoaXMubG9uZ1ByZXNzaW5nOyB9XG5cbiAgYWxsb3dUcmlnZ2VyID0gZmFsc2U7XG4gIHRyaWdnZXJFbmQgPSBfLmRlYm91bmNlKCgpID0+IHtcbiAgICB0aGlzLmVuZFByZXNzKCk7XG4gIH0sIDUwMClcblxuICBASG9zdExpc3RlbmVyKCdtb3VzZWRvd24nLCBbJyRldmVudCddKVxuICBvbk1vdXNlRG93bihldmVudCkge1xuICAgIC8vIGRvbid0IGRvIHJpZ2h0L21pZGRsZSBjbGlja3NcbiAgICBsb2cuZChgTU9VU0UgRE9XTiBgKTtcblxuICAgIGlmIChldmVudC53aGljaCAhPT0gMSkgcmV0dXJuO1xuICAgIHRoaXMuYWxsb3dUcmlnZ2VyID0gdHJ1ZTtcblxuICAgIHRoaXMubW91c2VYID0gZXZlbnQuY2xpZW50WDtcbiAgICB0aGlzLm1vdXNlWSA9IGV2ZW50LmNsaWVudFk7XG5cbiAgICB0aGlzLnByZXNzaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmxvbmdQcmVzc2luZyA9IGZhbHNlO1xuXG4gICAgdGhpcy50aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5hbGxvd1RyaWdnZXIpIHtcbiAgICAgICAgdGhpcy5sb25nUHJlc3NpbmcgPSB0cnVlO1xuICAgICAgICBsb2cuZChgbG9uZyBwcmVzc2luZyBzdGFydCAgcHJlc3NEdXJhdGlvbjoke3RoaXMucHJlc3NEdXJhdGlvbn0gYCk7XG4gICAgICAgIHRoaXMub25Mb25nUHJlc3MuZW1pdChldmVudCk7XG4gICAgICAgIHRoaXMubG9vcChldmVudCk7XG4gICAgICB9XG4gICAgfSwgdGhpcy5wcmVzc0R1cmF0aW9uKTtcblxuICAgIHRoaXMubG9vcChldmVudCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdtb3VzZW1vdmUnLCBbJyRldmVudCddKVxuICBvbk1vdXNlTW92ZShldmVudCkge1xuICAgIGlmICh0aGlzLnByZXNzaW5nICYmICF0aGlzLmxvbmdQcmVzc2luZykge1xuICAgICAgY29uc3QgeFRocmVzID0gKGV2ZW50LmNsaWVudFggLSB0aGlzLm1vdXNlWCkgPiAxMDtcbiAgICAgIGNvbnN0IHlUaHJlcyA9IChldmVudC5jbGllbnRZIC0gdGhpcy5tb3VzZVkpID4gMTA7XG4gICAgICBpZiAoeFRocmVzIHx8IHlUaHJlcykge1xuICAgICAgICB0aGlzLmVuZFByZXNzKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbG9vcChldmVudCkge1xuICAgIGlmICh0aGlzLmxvbmdQcmVzc2luZykge1xuICAgICAgdGhpcy50aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGxvZy5kKGBlbWlsIGxvbmdwcmVzc2luZ2ApXG4gICAgICAgIHRoaXMudHJpZ2dlckVuZCgpO1xuICAgICAgICB0aGlzLm9uTG9uZ1ByZXNzaW5nLmVtaXQoZXZlbnQpO1xuICAgICAgICB0aGlzLmxvb3AoZXZlbnQpO1xuICAgICAgfSwgNTApO1xuICAgIH1cbiAgfVxuXG4gIGVuZFByZXNzKGVtaXQgPSB0cnVlKSB7XG4gICAgdGhpcy5hbGxvd1RyaWdnZXIgPSBmYWxzZTtcbiAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0KTtcbiAgICB0aGlzLmxvbmdQcmVzc2luZyA9IGZhbHNlO1xuICAgIHRoaXMucHJlc3NpbmcgPSBmYWxzZTtcbiAgICBpZiAoZW1pdCkge1xuICAgICAgbG9nLmQoYEVNSVQgRU5EYClcbiAgICAgIHRoaXMub25Mb25nUHJlc3NFbmQuZW1pdCh0cnVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9nLmQoYE5PVCBFTUlUIEVORGApXG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2V1cCcpXG4gIG9uTW91c2VVcCgpIHtcbiAgICB0aGlzLmVuZFByZXNzKGZhbHNlKTtcbiAgfVxuXG59XG4iXX0=
|