@solidev/data 0.0.1-dev.0

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 (155) hide show
  1. package/README.md +7 -0
  2. package/esm2020/lib/auth/auth-interceptor.service.mjs +73 -0
  3. package/esm2020/lib/auth/auth.service.mjs +114 -0
  4. package/esm2020/lib/auth/jwt.mjs +21 -0
  5. package/esm2020/lib/data/data-backend.mjs +106 -0
  6. package/esm2020/lib/data/data-collection.mjs +109 -0
  7. package/esm2020/lib/data/data-collection.mock.mjs +39 -0
  8. package/esm2020/lib/data/data-model.mjs +287 -0
  9. package/esm2020/lib/data/data-parameters.mjs +34 -0
  10. package/esm2020/lib/data/data-query.mjs +143 -0
  11. package/esm2020/lib/data/data-query.mock.mjs +46 -0
  12. package/esm2020/lib/data/fields/base.mjs +142 -0
  13. package/esm2020/lib/data/fields/boolean.mjs +38 -0
  14. package/esm2020/lib/data/fields/datetime.mjs +109 -0
  15. package/esm2020/lib/data/fields/index.mjs +7 -0
  16. package/esm2020/lib/data/fields/numbers.mjs +28 -0
  17. package/esm2020/lib/data/fields/primaryfield.mjs +9 -0
  18. package/esm2020/lib/data/fields/relations.mjs +53 -0
  19. package/esm2020/lib/data/fields/stringfields.mjs +71 -0
  20. package/esm2020/lib/dispedit/choice.pipe.mjs +38 -0
  21. package/esm2020/lib/dispedit/dispedit/dispedit.component.mjs +457 -0
  22. package/esm2020/lib/dispedit/dispedit/dispedit.constants.mjs +2 -0
  23. package/esm2020/lib/dispedit/dispedit.module.mjs +60 -0
  24. package/esm2020/lib/dispedit/fkselect/fkselect.component.mjs +140 -0
  25. package/esm2020/lib/dispedit/m2mselect/m2mselect.component.mjs +316 -0
  26. package/esm2020/lib/dispedit/sdelete/sdelete.component.mjs +43 -0
  27. package/esm2020/lib/messages/message-zone/message-zone.component.mjs +57 -0
  28. package/esm2020/lib/messages/message.service.mjs +151 -0
  29. package/esm2020/lib/modellist/model-list-fields/model-list-field-header/model-list-field-header.component.mjs +34 -0
  30. package/esm2020/lib/modellist/model-list-fields/model-list-fields-selector/model-list-fields-selector.component.mjs +63 -0
  31. package/esm2020/lib/modellist/model-list-fields/model-list-fields.mjs +225 -0
  32. package/esm2020/lib/modellist/model-list-filters/filters/filtertypes.mjs +3 -0
  33. package/esm2020/lib/modellist/model-list-filters/filters/model-list-autocomplete-filter/model-list-autocomplete-filter.component.mjs +104 -0
  34. package/esm2020/lib/modellist/model-list-filters/filters/model-list-autocomplete-filter/model-list-autocomplete-filter.mjs +31 -0
  35. package/esm2020/lib/modellist/model-list-filters/filters/model-list-autocomplete-multi-filter/model-list-autocomplete-multi-filter.component.mjs +25 -0
  36. package/esm2020/lib/modellist/model-list-filters/filters/model-list-autocomplete-multi-filter/model-list-autocomplete-multi-filter.mjs +40 -0
  37. package/esm2020/lib/modellist/model-list-filters/filters/model-list-datetime-filter/model-list-datetime-filter.component.mjs +21 -0
  38. package/esm2020/lib/modellist/model-list-filters/filters/model-list-datetime-filter/model-list-datetime-filter.mjs +14 -0
  39. package/esm2020/lib/modellist/model-list-filters/filters/model-list-datetimerange-filter/model-list-datetime-range-filter.component.mjs +21 -0
  40. package/esm2020/lib/modellist/model-list-filters/filters/model-list-datetimerange-filter/model-list-datetimerange-filter.mjs +14 -0
  41. package/esm2020/lib/modellist/model-list-filters/filters/model-list-flags-filter/model-list-flags-filter.component.mjs +21 -0
  42. package/esm2020/lib/modellist/model-list-filters/filters/model-list-flags-filter/model-list-flags-filter.mjs +14 -0
  43. package/esm2020/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/model-list-geodistance-filter.component.mjs +21 -0
  44. package/esm2020/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/model-list-geodistance-filter.mjs +14 -0
  45. package/esm2020/lib/modellist/model-list-filters/filters/model-list-number-filter/model-list-number-filter.component.mjs +44 -0
  46. package/esm2020/lib/modellist/model-list-filters/filters/model-list-number-filter/model-list-number-filter.mjs +49 -0
  47. package/esm2020/lib/modellist/model-list-filters/filters/model-list-select-filter/model-list-select-filter.component.mjs +45 -0
  48. package/esm2020/lib/modellist/model-list-filters/filters/model-list-select-filter/model-list-select-filter.mjs +26 -0
  49. package/esm2020/lib/modellist/model-list-filters/filters/model-list-select-multi-filter/model-list-select-multi-filter.component.mjs +21 -0
  50. package/esm2020/lib/modellist/model-list-filters/filters/model-list-select-multi-filter/model-list-select-multi-filter.mjs +14 -0
  51. package/esm2020/lib/modellist/model-list-filters/filters/model-list-text-filter/model-list-text-filter.component.mjs +40 -0
  52. package/esm2020/lib/modellist/model-list-filters/filters/model-list-text-filter/model-list-text-filter.mjs +14 -0
  53. package/esm2020/lib/modellist/model-list-filters/filters/model-list-tree-filter/model-list-tree-filter.component.mjs +21 -0
  54. package/esm2020/lib/modellist/model-list-filters/filters/model-list-tree-filter/model-list-tree-filter.mjs +14 -0
  55. package/esm2020/lib/modellist/model-list-filters/model-list-filter.mjs +41 -0
  56. package/esm2020/lib/modellist/model-list-filters/model-list-filters/model-list-filters.component.mjs +48 -0
  57. package/esm2020/lib/modellist/model-list-filters/model-list-filters-select/model-list-filters-select.component.mjs +30 -0
  58. package/esm2020/lib/modellist/model-list-filters/model-list-filters.mjs +80 -0
  59. package/esm2020/lib/modellist/model-list-paginator/model-list-paginator/model-list-paginator.component.mjs +70 -0
  60. package/esm2020/lib/modellist/model-list-paginator/model-list-paginator.mjs +47 -0
  61. package/esm2020/lib/modellist/model-list-sorter/model-list-sorter/model-list-sorter.component.mjs +49 -0
  62. package/esm2020/lib/modellist/model-list-sorter/model-list-sorter.mjs +116 -0
  63. package/esm2020/lib/modellist/model-list.service.mjs +115 -0
  64. package/esm2020/lib/routing/breadcrumb/breadcrumb.component.mjs +142 -0
  65. package/esm2020/lib/routing/routing.mjs +57 -0
  66. package/esm2020/lib/uploader/index.mjs +6 -0
  67. package/esm2020/lib/uploader/interfaces.mjs +8 -0
  68. package/esm2020/lib/uploader/ng-file-drop.directive.mjs +81 -0
  69. package/esm2020/lib/uploader/ng-file-select.directive.mjs +51 -0
  70. package/esm2020/lib/uploader/ngx-uploader.class.mjs +308 -0
  71. package/esm2020/lib/uploader/ngx-uploader.module.mjs +17 -0
  72. package/esm2020/lib/utils/slugify.mjs +16 -0
  73. package/esm2020/lib/utils/tab-memory.service.mjs +71 -0
  74. package/esm2020/public-api.mjs +41 -0
  75. package/esm2020/solidev-data.mjs +5 -0
  76. package/fesm2015/solidev-data.mjs +4791 -0
  77. package/fesm2015/solidev-data.mjs.map +1 -0
  78. package/fesm2020/solidev-data.mjs +4757 -0
  79. package/fesm2020/solidev-data.mjs.map +1 -0
  80. package/index.d.ts +5 -0
  81. package/lib/auth/auth-interceptor.service.d.ts +16 -0
  82. package/lib/auth/auth.service.d.ts +38 -0
  83. package/lib/auth/jwt.d.ts +22 -0
  84. package/lib/data/data-backend.d.ts +47 -0
  85. package/lib/data/data-collection.d.ts +87 -0
  86. package/lib/data/data-collection.mock.d.ts +19 -0
  87. package/lib/data/data-model.d.ts +91 -0
  88. package/lib/data/data-parameters.d.ts +26 -0
  89. package/lib/data/data-query.d.ts +100 -0
  90. package/lib/data/data-query.mock.d.ts +25 -0
  91. package/lib/data/fields/base.d.ts +116 -0
  92. package/lib/data/fields/boolean.d.ts +9 -0
  93. package/lib/data/fields/datetime.d.ts +39 -0
  94. package/lib/data/fields/index.d.ts +6 -0
  95. package/lib/data/fields/numbers.d.ts +31 -0
  96. package/lib/data/fields/primaryfield.d.ts +8 -0
  97. package/lib/data/fields/relations.d.ts +45 -0
  98. package/lib/data/fields/stringfields.d.ts +50 -0
  99. package/lib/dispedit/choice.pipe.d.ts +8 -0
  100. package/lib/dispedit/dispedit/dispedit.component.d.ts +177 -0
  101. package/lib/dispedit/dispedit/dispedit.constants.d.ts +6 -0
  102. package/lib/dispedit/dispedit.module.d.ts +20 -0
  103. package/lib/dispedit/fkselect/fkselect.component.d.ts +43 -0
  104. package/lib/dispedit/m2mselect/m2mselect.component.d.ts +120 -0
  105. package/lib/dispedit/sdelete/sdelete.component.d.ts +26 -0
  106. package/lib/messages/message-zone/message-zone.component.d.ts +14 -0
  107. package/lib/messages/message.service.d.ts +59 -0
  108. package/lib/modellist/model-list-fields/model-list-field-header/model-list-field-header.component.d.ts +15 -0
  109. package/lib/modellist/model-list-fields/model-list-fields-selector/model-list-fields-selector.component.d.ts +19 -0
  110. package/lib/modellist/model-list-fields/model-list-fields.d.ts +67 -0
  111. package/lib/modellist/model-list-filters/filters/filtertypes.d.ts +1 -0
  112. package/lib/modellist/model-list-filters/filters/model-list-autocomplete-filter/model-list-autocomplete-filter.component.d.ts +30 -0
  113. package/lib/modellist/model-list-filters/filters/model-list-autocomplete-filter/model-list-autocomplete-filter.d.ts +24 -0
  114. package/lib/modellist/model-list-filters/filters/model-list-autocomplete-multi-filter/model-list-autocomplete-multi-filter.component.d.ts +10 -0
  115. package/lib/modellist/model-list-filters/filters/model-list-autocomplete-multi-filter/model-list-autocomplete-multi-filter.d.ts +15 -0
  116. package/lib/modellist/model-list-filters/filters/model-list-datetime-filter/model-list-datetime-filter.component.d.ts +11 -0
  117. package/lib/modellist/model-list-filters/filters/model-list-datetime-filter/model-list-datetime-filter.d.ts +4 -0
  118. package/lib/modellist/model-list-filters/filters/model-list-datetimerange-filter/model-list-datetime-range-filter.component.d.ts +11 -0
  119. package/lib/modellist/model-list-filters/filters/model-list-datetimerange-filter/model-list-datetimerange-filter.d.ts +4 -0
  120. package/lib/modellist/model-list-filters/filters/model-list-flags-filter/model-list-flags-filter.component.d.ts +11 -0
  121. package/lib/modellist/model-list-filters/filters/model-list-flags-filter/model-list-flags-filter.d.ts +4 -0
  122. package/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/model-list-geodistance-filter.component.d.ts +11 -0
  123. package/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/model-list-geodistance-filter.d.ts +4 -0
  124. package/lib/modellist/model-list-filters/filters/model-list-number-filter/model-list-number-filter.component.d.ts +17 -0
  125. package/lib/modellist/model-list-filters/filters/model-list-number-filter/model-list-number-filter.d.ts +19 -0
  126. package/lib/modellist/model-list-filters/filters/model-list-select-filter/model-list-select-filter.component.d.ts +17 -0
  127. package/lib/modellist/model-list-filters/filters/model-list-select-filter/model-list-select-filter.d.ts +16 -0
  128. package/lib/modellist/model-list-filters/filters/model-list-select-multi-filter/model-list-select-multi-filter.component.d.ts +11 -0
  129. package/lib/modellist/model-list-filters/filters/model-list-select-multi-filter/model-list-select-multi-filter.d.ts +4 -0
  130. package/lib/modellist/model-list-filters/filters/model-list-text-filter/model-list-text-filter.component.d.ts +16 -0
  131. package/lib/modellist/model-list-filters/filters/model-list-text-filter/model-list-text-filter.d.ts +4 -0
  132. package/lib/modellist/model-list-filters/filters/model-list-tree-filter/model-list-tree-filter.component.d.ts +11 -0
  133. package/lib/modellist/model-list-filters/filters/model-list-tree-filter/model-list-tree-filter.d.ts +4 -0
  134. package/lib/modellist/model-list-filters/model-list-filter.d.ts +31 -0
  135. package/lib/modellist/model-list-filters/model-list-filters/model-list-filters.component.d.ts +9 -0
  136. package/lib/modellist/model-list-filters/model-list-filters-select/model-list-filters-select.component.d.ts +13 -0
  137. package/lib/modellist/model-list-filters/model-list-filters.d.ts +15 -0
  138. package/lib/modellist/model-list-paginator/model-list-paginator/model-list-paginator.component.d.ts +23 -0
  139. package/lib/modellist/model-list-paginator/model-list-paginator.d.ts +16 -0
  140. package/lib/modellist/model-list-sorter/model-list-sorter/model-list-sorter.component.d.ts +22 -0
  141. package/lib/modellist/model-list-sorter/model-list-sorter.d.ts +61 -0
  142. package/lib/modellist/model-list.service.d.ts +79 -0
  143. package/lib/routing/breadcrumb/breadcrumb.component.d.ts +42 -0
  144. package/lib/routing/routing.d.ts +64 -0
  145. package/lib/uploader/index.d.ts +5 -0
  146. package/lib/uploader/interfaces.d.ts +67 -0
  147. package/lib/uploader/ng-file-drop.directive.d.ts +22 -0
  148. package/lib/uploader/ng-file-select.directive.d.ts +19 -0
  149. package/lib/uploader/ngx-uploader.class.d.ts +35 -0
  150. package/lib/uploader/ngx-uploader.module.d.ts +8 -0
  151. package/lib/utils/slugify.d.ts +1 -0
  152. package/lib/utils/tab-memory.service.d.ts +29 -0
  153. package/package.json +32 -0
  154. package/public-api.d.ts +37 -0
  155. package/src/lib/data/README.md +35 -0
@@ -0,0 +1,142 @@
1
+ import { Component, Input, } from '@angular/core';
2
+ import { Subject, takeUntil } from 'rxjs';
3
+ import { NavigationEnd, RouterModule, } from '@angular/router';
4
+ import { filter } from 'rxjs/operators';
5
+ import { CommonModule } from '@angular/common';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/router";
8
+ import * as i2 from "@angular/common";
9
+ /**
10
+ * Use data from route config to create a breadcrumb for current route.
11
+ *
12
+ * Route config data is :
13
+ * - title : route fragment title or lodash template to build title
14
+ * (provided arguments for template processing : route (current segment route snapshot)
15
+ * and data (input argument)
16
+ * - icon: icon classes. Example fa fa-home for home & font awesome
17
+ */
18
+ export class BreadcrumbComponent {
19
+ constructor(router, route) {
20
+ this.router = router;
21
+ this.route = route;
22
+ /**
23
+ * Do we display icons ?
24
+ */
25
+ this.icons = true;
26
+ this.tree = [];
27
+ this._subscriptions = new Subject();
28
+ }
29
+ ngOnInit() {
30
+ this.getRouteTree(this.router.routerState);
31
+ this.router.events
32
+ .pipe(takeUntil(this._subscriptions), filter((event) => event instanceof NavigationEnd))
33
+ .subscribe(() => {
34
+ this.getRouteTree(this.router.routerState);
35
+ });
36
+ }
37
+ ngOnDestroy() {
38
+ this._subscriptions.next();
39
+ this._subscriptions.complete();
40
+ }
41
+ ngOnChanges(changes) {
42
+ this.getRouteTree(this.router.routerState);
43
+ }
44
+ getRouteTree(current) {
45
+ const tree = [];
46
+ const url = [];
47
+ let p = current.root.snapshot;
48
+ while (p != null) {
49
+ let rdata = {
50
+ tree: false,
51
+ title: () => 'xxxx',
52
+ icon: '',
53
+ skip: true,
54
+ };
55
+ const data = p.data;
56
+ // Get route data
57
+ if (p.routeConfig && p.routeConfig.data) {
58
+ rdata = p.routeConfig.data;
59
+ }
60
+ if (rdata.tree) {
61
+ // Get icon
62
+ for (const u of p.url) {
63
+ url.push(u.path);
64
+ let rtd = {
65
+ icon: this.getIcon(rdata, data),
66
+ title: this.getTitle(rdata, data, u),
67
+ path: url.join('/'),
68
+ current: false,
69
+ };
70
+ if (rtd.path.length > 0 && rtd.path[0] !== '/') {
71
+ rtd.path = '/' + rtd.path;
72
+ }
73
+ if (!rdata.skip) {
74
+ tree.push(rtd);
75
+ }
76
+ }
77
+ }
78
+ else {
79
+ url.push(p.url.join('/'));
80
+ let rtd = {
81
+ icon: this.getIcon(rdata, data),
82
+ title: this.getTitle(rdata, data),
83
+ path: url.join('/'),
84
+ current: false,
85
+ };
86
+ if (rtd.path.length > 0 && rtd.path[0] !== '/') {
87
+ rtd.path = '/' + rtd.path;
88
+ }
89
+ if (!rdata.skip) {
90
+ tree.push(rtd);
91
+ }
92
+ }
93
+ p = p.firstChild;
94
+ }
95
+ if (tree.length > 0) {
96
+ tree[tree.length - 1].current = true;
97
+ }
98
+ this.tree = tree;
99
+ }
100
+ getTitle(rdata, data, u) {
101
+ if (rdata['title']) {
102
+ if (typeof rdata['title'] === 'function') {
103
+ const tpl = rdata['title'];
104
+ try {
105
+ if (u) {
106
+ return tpl(data, u.path);
107
+ }
108
+ else {
109
+ return tpl(data);
110
+ }
111
+ }
112
+ catch (e) {
113
+ console.warn('Unable to process breadcrumb function', e);
114
+ if (data.title != null) {
115
+ return 'xx';
116
+ }
117
+ }
118
+ }
119
+ else {
120
+ return rdata['title'];
121
+ }
122
+ }
123
+ return 'xxx';
124
+ }
125
+ getIcon(rdata, data) {
126
+ if (data.icon) {
127
+ return data.icon;
128
+ }
129
+ return '';
130
+ }
131
+ }
132
+ BreadcrumbComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: BreadcrumbComponent, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
133
+ BreadcrumbComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: BreadcrumbComponent, isStandalone: true, selector: "data-breadcrumb", inputs: { data: "data", icons: "icons" }, usesOnChanges: true, ngImport: i0, template: "\n<nav aria-label=\"breadcrumb\">\n <ol class=\"breadcrumb\">\n <ng-container *ngFor=\"let p of tree\">\n <li class=\"breadcrumb-item\" *ngIf=\"!p.current\"><a class=\"breadcrumb-item\" [routerLink]=\"p.path\">\n <ng-container *ngIf=\"icons &amp;&amp; p.icon\"><i class=\"me-2\" [ngClass]=\"p.icon\"></i>{{p.title}}</ng-container>\n <ng-container *ngIf=\"!(icons &amp;&amp; p.icon)\">{{p.title}}</ng-container></a></li>\n <li class=\"breadcrumb-item active\" aria-current=\"page\" *ngIf=\"p.current\">\n <ng-container *ngIf=\"icons &amp;&amp; p.icon\"><i class=\"me-1\" [ngClass]=\"p.icon\"></i>{{p.title}}</ng-container>\n <ng-container *ngIf=\"!(icons &amp;&amp; p.icon)\">{{p.title}}</ng-container>\n </li>\n </ng-container>\n </ol>\n</nav>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }] });
134
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: BreadcrumbComponent, decorators: [{
135
+ type: Component,
136
+ args: [{ selector: 'data-breadcrumb', standalone: true, imports: [CommonModule, RouterModule], template: "\n<nav aria-label=\"breadcrumb\">\n <ol class=\"breadcrumb\">\n <ng-container *ngFor=\"let p of tree\">\n <li class=\"breadcrumb-item\" *ngIf=\"!p.current\"><a class=\"breadcrumb-item\" [routerLink]=\"p.path\">\n <ng-container *ngIf=\"icons &amp;&amp; p.icon\"><i class=\"me-2\" [ngClass]=\"p.icon\"></i>{{p.title}}</ng-container>\n <ng-container *ngIf=\"!(icons &amp;&amp; p.icon)\">{{p.title}}</ng-container></a></li>\n <li class=\"breadcrumb-item active\" aria-current=\"page\" *ngIf=\"p.current\">\n <ng-container *ngIf=\"icons &amp;&amp; p.icon\"><i class=\"me-1\" [ngClass]=\"p.icon\"></i>{{p.title}}</ng-container>\n <ng-container *ngIf=\"!(icons &amp;&amp; p.icon)\">{{p.title}}</ng-container>\n </li>\n </ng-container>\n </ol>\n</nav>" }]
137
+ }], ctorParameters: function () { return [{ type: i1.Router }, { type: i1.ActivatedRoute }]; }, propDecorators: { data: [{
138
+ type: Input
139
+ }], icons: [{
140
+ type: Input
141
+ }] } });
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhL3NyYy9saWIvcm91dGluZy9icmVhZGNydW1iL2JyZWFkY3J1bWIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS9zcmMvbGliL3JvdXRpbmcvYnJlYWRjcnVtYi9icmVhZGNydW1iLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxHQUtOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFHTCxhQUFhLEVBRWIsWUFBWSxHQUdiLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7OztBQVUvQzs7Ozs7Ozs7R0FRRztBQVFILE1BQU0sT0FBTyxtQkFBbUI7SUFZOUIsWUFBbUIsTUFBYyxFQUFTLEtBQXFCO1FBQTVDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBUyxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQVAvRDs7V0FFRztRQUNhLFVBQUssR0FBRyxJQUFJLENBQUM7UUFDdEIsU0FBSSxHQUFvQixFQUFFLENBQUM7UUFDMUIsbUJBQWMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRXFCLENBQUM7SUFFbkUsUUFBUTtRQUNOLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU07YUFDZixJQUFJLENBQ0gsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsRUFDOUIsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLFlBQVksYUFBYSxDQUFDLENBQ2xEO2FBQ0EsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM3QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRU0sV0FBVyxDQUFDLE9BQXNCO1FBQ3ZDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRU0sWUFBWSxDQUFDLE9BQW9CO1FBQ3RDLE1BQU0sSUFBSSxHQUFvQixFQUFFLENBQUM7UUFDakMsTUFBTSxHQUFHLEdBQWEsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxHQUFrQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUU3RCxPQUFPLENBQUMsSUFBSSxJQUFJLEVBQUU7WUFDaEIsSUFBSSxLQUFLLEdBQTZCO2dCQUNwQyxJQUFJLEVBQUUsS0FBSztnQkFDWCxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTTtnQkFDbkIsSUFBSSxFQUFFLEVBQUU7Z0JBQ1IsSUFBSSxFQUFFLElBQUk7YUFDWCxDQUFDO1lBQ0YsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQXVCLENBQUM7WUFFdkMsaUJBQWlCO1lBQ2pCLElBQUksQ0FBQyxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRTtnQkFDdkMsS0FBSyxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBdUIsQ0FBQzthQUMvQztZQUVELElBQUksS0FBSyxDQUFDLElBQUksRUFBRTtnQkFDZCxXQUFXO2dCQUNYLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRTtvQkFDckIsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ2pCLElBQUksR0FBRyxHQUFrQjt3QkFDdkIsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQzt3QkFDL0IsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7d0JBQ3BDLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQzt3QkFDbkIsT0FBTyxFQUFFLEtBQUs7cUJBQ2YsQ0FBQztvQkFDRixJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRTt3QkFDOUMsR0FBRyxDQUFDLElBQUksR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztxQkFDM0I7b0JBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUU7d0JBQ2YsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztxQkFDaEI7aUJBQ0Y7YUFDRjtpQkFBTTtnQkFDTCxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQzFCLElBQUksR0FBRyxHQUFrQjtvQkFDdkIsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQztvQkFDL0IsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQztvQkFDakMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO29CQUNuQixPQUFPLEVBQUUsS0FBSztpQkFDZixDQUFDO2dCQUNGLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFO29CQUM5QyxHQUFHLENBQUMsSUFBSSxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO2lCQUMzQjtnQkFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRTtvQkFDZixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUNoQjthQUNGO1lBRUQsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUM7U0FDbEI7UUFDRCxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7U0FDdEM7UUFDRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRU0sUUFBUSxDQUNiLEtBQStCLEVBQy9CLElBQXFCLEVBQ3JCLENBQWM7UUFFZCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNsQixJQUFJLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLFVBQVUsRUFBRTtnQkFDeEMsTUFBTSxHQUFHLEdBQWUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUN2QyxJQUFJO29CQUNGLElBQUksQ0FBQyxFQUFFO3dCQUNMLE9BQU8sR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7cUJBQzFCO3lCQUFNO3dCQUNMLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO3FCQUNsQjtpQkFDRjtnQkFBQyxPQUFPLENBQUMsRUFBRTtvQkFDVixPQUFPLENBQUMsSUFBSSxDQUFDLHVDQUF1QyxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUN6RCxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxFQUFFO3dCQUN0QixPQUFPLElBQUksQ0FBQztxQkFDYjtpQkFDRjthQUNGO2lCQUFNO2dCQUNMLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3ZCO1NBQ0Y7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTSxPQUFPLENBQ1osS0FBK0IsRUFDL0IsSUFBcUI7UUFFckIsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQ2xCO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDOztnSEFsSVUsbUJBQW1CO29HQUFuQixtQkFBbUIsMElDN0NoQyxneUJBYU0seUREOEJNLFlBQVksNlZBQUUsWUFBWTsyRkFFekIsbUJBQW1CO2tCQVAvQixTQUFTOytCQUNFLGlCQUFpQixjQUdmLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxZQUFZLENBQUM7MEhBTXJCLElBQUk7c0JBQW5CLEtBQUs7Z0JBSVUsS0FBSztzQkFBcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBBY3RpdmF0ZWRSb3V0ZSxcbiAgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgTmF2aWdhdGlvbkVuZCxcbiAgUm91dGVyLFxuICBSb3V0ZXJNb2R1bGUsXG4gIFJvdXRlclN0YXRlLFxuICBVcmxTZWdtZW50LFxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEJhc2VSb3V0ZVBhcmFtcywgVHBsRm4gfSBmcm9tICcuLi9yb3V0aW5nJztcblxuZXhwb3J0IGludGVyZmFjZSBJUGF0aFRyZWVJdGVtIHtcbiAgcGF0aDogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBpY29uOiBzdHJpbmc7XG4gIGN1cnJlbnQ6IGJvb2xlYW47XG59XG5cbi8qKlxuICogVXNlIGRhdGEgZnJvbSByb3V0ZSBjb25maWcgdG8gY3JlYXRlIGEgYnJlYWRjcnVtYiBmb3IgY3VycmVudCByb3V0ZS5cbiAqXG4gKiBSb3V0ZSBjb25maWcgZGF0YSBpcyA6XG4gKiAtIHRpdGxlIDogcm91dGUgZnJhZ21lbnQgdGl0bGUgb3IgbG9kYXNoIHRlbXBsYXRlIHRvIGJ1aWxkIHRpdGxlXG4gKiAgIChwcm92aWRlZCBhcmd1bWVudHMgZm9yIHRlbXBsYXRlIHByb2Nlc3NpbmcgOiByb3V0ZSAoY3VycmVudCBzZWdtZW50IHJvdXRlIHNuYXBzaG90KVxuICogICBhbmQgZGF0YSAoaW5wdXQgYXJndW1lbnQpXG4gKiAtIGljb246IGljb24gY2xhc3Nlcy4gRXhhbXBsZSBmYSBmYS1ob21lIGZvciBob21lICYgZm9udCBhd2Vzb21lXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RhdGEtYnJlYWRjcnVtYicsXG4gIHRlbXBsYXRlVXJsOiAnLi9icmVhZGNydW1iLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYnJlYWRjcnVtYi5jb21wb25lbnQuY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFJvdXRlck1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIEJyZWFkY3J1bWJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgZGF0YSB0byBiZSB1c2VkIGluIHRpdGxlVGVtcGxhdGVcbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBkYXRhOiBhbnk7XG4gIC8qKlxuICAgKiBEbyB3ZSBkaXNwbGF5IGljb25zID9cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBpY29ucyA9IHRydWU7XG4gIHB1YmxpYyB0cmVlOiBJUGF0aFRyZWVJdGVtW10gPSBbXTtcbiAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHJvdXRlcjogUm91dGVyLCBwdWJsaWMgcm91dGU6IEFjdGl2YXRlZFJvdXRlKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZ2V0Um91dGVUcmVlKHRoaXMucm91dGVyLnJvdXRlclN0YXRlKTtcbiAgICB0aGlzLnJvdXRlci5ldmVudHNcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fc3Vic2NyaXB0aW9ucyksXG4gICAgICAgIGZpbHRlcigoZXZlbnQpID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmdldFJvdXRlVHJlZSh0aGlzLnJvdXRlci5yb3V0ZXJTdGF0ZSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLm5leHQoKTtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIHRoaXMuZ2V0Um91dGVUcmVlKHRoaXMucm91dGVyLnJvdXRlclN0YXRlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRSb3V0ZVRyZWUoY3VycmVudDogUm91dGVyU3RhdGUpOiB2b2lkIHtcbiAgICBjb25zdCB0cmVlOiBJUGF0aFRyZWVJdGVtW10gPSBbXTtcbiAgICBjb25zdCB1cmw6IHN0cmluZ1tdID0gW107XG4gICAgbGV0IHA6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QgfCBudWxsID0gY3VycmVudC5yb290LnNuYXBzaG90O1xuXG4gICAgd2hpbGUgKHAgIT0gbnVsbCkge1xuICAgICAgbGV0IHJkYXRhOiBQYXJ0aWFsPEJhc2VSb3V0ZVBhcmFtcz4gPSB7XG4gICAgICAgIHRyZWU6IGZhbHNlLFxuICAgICAgICB0aXRsZTogKCkgPT4gJ3h4eHgnLFxuICAgICAgICBpY29uOiAnJyxcbiAgICAgICAgc2tpcDogdHJ1ZSxcbiAgICAgIH07XG4gICAgICBjb25zdCBkYXRhID0gcC5kYXRhIGFzIEJhc2VSb3V0ZVBhcmFtcztcblxuICAgICAgLy8gR2V0IHJvdXRlIGRhdGFcbiAgICAgIGlmIChwLnJvdXRlQ29uZmlnICYmIHAucm91dGVDb25maWcuZGF0YSkge1xuICAgICAgICByZGF0YSA9IHAucm91dGVDb25maWcuZGF0YSBhcyBCYXNlUm91dGVQYXJhbXM7XG4gICAgICB9XG5cbiAgICAgIGlmIChyZGF0YS50cmVlKSB7XG4gICAgICAgIC8vIEdldCBpY29uXG4gICAgICAgIGZvciAoY29uc3QgdSBvZiBwLnVybCkge1xuICAgICAgICAgIHVybC5wdXNoKHUucGF0aCk7XG4gICAgICAgICAgbGV0IHJ0ZDogSVBhdGhUcmVlSXRlbSA9IHtcbiAgICAgICAgICAgIGljb246IHRoaXMuZ2V0SWNvbihyZGF0YSwgZGF0YSksXG4gICAgICAgICAgICB0aXRsZTogdGhpcy5nZXRUaXRsZShyZGF0YSwgZGF0YSwgdSksXG4gICAgICAgICAgICBwYXRoOiB1cmwuam9pbignLycpLFxuICAgICAgICAgICAgY3VycmVudDogZmFsc2UsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBpZiAocnRkLnBhdGgubGVuZ3RoID4gMCAmJiBydGQucGF0aFswXSAhPT0gJy8nKSB7XG4gICAgICAgICAgICBydGQucGF0aCA9ICcvJyArIHJ0ZC5wYXRoO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIXJkYXRhLnNraXApIHtcbiAgICAgICAgICAgIHRyZWUucHVzaChydGQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdXJsLnB1c2gocC51cmwuam9pbignLycpKTtcbiAgICAgICAgbGV0IHJ0ZDogSVBhdGhUcmVlSXRlbSA9IHtcbiAgICAgICAgICBpY29uOiB0aGlzLmdldEljb24ocmRhdGEsIGRhdGEpLFxuICAgICAgICAgIHRpdGxlOiB0aGlzLmdldFRpdGxlKHJkYXRhLCBkYXRhKSxcbiAgICAgICAgICBwYXRoOiB1cmwuam9pbignLycpLFxuICAgICAgICAgIGN1cnJlbnQ6IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgICBpZiAocnRkLnBhdGgubGVuZ3RoID4gMCAmJiBydGQucGF0aFswXSAhPT0gJy8nKSB7XG4gICAgICAgICAgcnRkLnBhdGggPSAnLycgKyBydGQucGF0aDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXJkYXRhLnNraXApIHtcbiAgICAgICAgICB0cmVlLnB1c2gocnRkKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBwID0gcC5maXJzdENoaWxkO1xuICAgIH1cbiAgICBpZiAodHJlZS5sZW5ndGggPiAwKSB7XG4gICAgICB0cmVlW3RyZWUubGVuZ3RoIC0gMV0uY3VycmVudCA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMudHJlZSA9IHRyZWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0VGl0bGUoXG4gICAgcmRhdGE6IFBhcnRpYWw8QmFzZVJvdXRlUGFyYW1zPixcbiAgICBkYXRhOiBCYXNlUm91dGVQYXJhbXMsXG4gICAgdT86IFVybFNlZ21lbnRcbiAgKTogc3RyaW5nIHtcbiAgICBpZiAocmRhdGFbJ3RpdGxlJ10pIHtcbiAgICAgIGlmICh0eXBlb2YgcmRhdGFbJ3RpdGxlJ10gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgY29uc3QgdHBsOiBUcGxGbjxhbnk+ID0gcmRhdGFbJ3RpdGxlJ107XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgaWYgKHUpIHtcbiAgICAgICAgICAgIHJldHVybiB0cGwoZGF0YSwgdS5wYXRoKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRwbChkYXRhKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oJ1VuYWJsZSB0byBwcm9jZXNzIGJyZWFkY3J1bWIgZnVuY3Rpb24nLCBlKTtcbiAgICAgICAgICBpZiAoZGF0YS50aXRsZSAhPSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gJ3h4JztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiByZGF0YVsndGl0bGUnXTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuICd4eHgnO1xuICB9XG5cbiAgcHVibGljIGdldEljb24oXG4gICAgcmRhdGE6IFBhcnRpYWw8QmFzZVJvdXRlUGFyYW1zPixcbiAgICBkYXRhOiBCYXNlUm91dGVQYXJhbXNcbiAgKTogc3RyaW5nIHtcbiAgICBpZiAoZGF0YS5pY29uKSB7XG4gICAgICByZXR1cm4gZGF0YS5pY29uO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cbn1cbiIsIlxuPG5hdiBhcmlhLWxhYmVsPVwiYnJlYWRjcnVtYlwiPlxuICA8b2wgY2xhc3M9XCJicmVhZGNydW1iXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcCBvZiB0cmVlXCI+XG4gICAgICA8bGkgY2xhc3M9XCJicmVhZGNydW1iLWl0ZW1cIiAqbmdJZj1cIiFwLmN1cnJlbnRcIj48YSBjbGFzcz1cImJyZWFkY3J1bWItaXRlbVwiIFtyb3V0ZXJMaW5rXT1cInAucGF0aFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpY29ucyAmYW1wOyZhbXA7IHAuaWNvblwiPjxpIGNsYXNzPVwibWUtMlwiIFtuZ0NsYXNzXT1cInAuaWNvblwiPjwvaT57e3AudGl0bGV9fTwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhKGljb25zICZhbXA7JmFtcDsgcC5pY29uKVwiPnt7cC50aXRsZX19PC9uZy1jb250YWluZXI+PC9hPjwvbGk+XG4gICAgICA8bGkgY2xhc3M9XCJicmVhZGNydW1iLWl0ZW0gYWN0aXZlXCIgYXJpYS1jdXJyZW50PVwicGFnZVwiICpuZ0lmPVwicC5jdXJyZW50XCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpY29ucyAmYW1wOyZhbXA7IHAuaWNvblwiPjxpIGNsYXNzPVwibWUtMVwiIFtuZ0NsYXNzXT1cInAuaWNvblwiPjwvaT57e3AudGl0bGV9fTwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIShpY29ucyAmYW1wOyZhbXA7IHAuaWNvbilcIj57e3AudGl0bGV9fTwvbmctY29udGFpbmVyPlxuICAgICAgPC9saT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9vbD5cbjwvbmF2PiJdfQ==
@@ -0,0 +1,57 @@
1
+ export function RData(value) {
2
+ return value;
3
+ }
4
+ export class Link {
5
+ constructor(config, context, router) {
6
+ this._cargs = {};
7
+ this._params = [];
8
+ this._params = config.params || [];
9
+ this._route = config.route;
10
+ this._router = router;
11
+ this._name = config.name;
12
+ if (context) {
13
+ this.context(context);
14
+ }
15
+ }
16
+ get name() {
17
+ return this._name;
18
+ }
19
+ context(ctx) {
20
+ for (const n of this._params) {
21
+ if (ctx && ctx[n]) {
22
+ this._cargs[n] = ctx[n];
23
+ }
24
+ else {
25
+ this._cargs[n] = null;
26
+ }
27
+ }
28
+ }
29
+ route(params) {
30
+ const rargs = [];
31
+ for (const n of this._params) {
32
+ if (params && params[n] !== undefined && params[n] !== null) {
33
+ rargs.push(params[n]);
34
+ }
35
+ else if (this._cargs[n] !== undefined && this._cargs[n] !== null) {
36
+ rargs.push(this._cargs[n]);
37
+ }
38
+ else {
39
+ console.error('Missing route parameter', n);
40
+ return [];
41
+ }
42
+ }
43
+ // SEE: Check for undefined in rargs
44
+ return this._route(...rargs);
45
+ }
46
+ async navigate(params, router) {
47
+ if (router) {
48
+ return router.navigate(this.route(params));
49
+ }
50
+ if (this._router) {
51
+ return this._router.navigate(this.route(params));
52
+ }
53
+ console.error('Router not provided, no navigation');
54
+ return false;
55
+ }
56
+ }
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEvc3JjL2xpYi9yb3V0aW5nL3JvdXRpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBMkNBLE1BQU0sVUFBVSxLQUFLLENBQTRCLEtBQVE7SUFDdkQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBZ0JELE1BQU0sT0FBTyxJQUFJO0lBTWYsWUFBWSxNQUF1QixFQUFFLE9BQVksRUFBRSxNQUFlO1FBTDFELFdBQU0sR0FBNkIsRUFBRSxDQUFDO1FBQ3RDLFlBQU8sR0FBYSxFQUFFLENBQUM7UUFLN0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDM0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQ3pCLElBQUksT0FBTyxFQUFFO1lBQ1gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUN2QjtJQUNILENBQUM7SUFJRCxJQUFXLElBQUk7UUFDYixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVNLE9BQU8sQ0FBQyxHQUFRO1FBQ3JCLEtBQUssTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUM1QixJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3pCO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO2FBQ3ZCO1NBQ0Y7SUFDSCxDQUFDO0lBRU0sS0FBSyxDQUFDLE1BQThCO1FBQ3pDLE1BQU0sS0FBSyxHQUFVLEVBQUUsQ0FBQztRQUN4QixLQUFLLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDNUIsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFO2dCQUMzRCxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3ZCO2lCQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUU7Z0JBQ2xFLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzVCO2lCQUFNO2dCQUNMLE9BQU8sQ0FBQyxLQUFLLENBQUMseUJBQXlCLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzVDLE9BQU8sRUFBRSxDQUFDO2FBQ1g7U0FDRjtRQUNELG9DQUFvQztRQUNwQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRU0sS0FBSyxDQUFDLFFBQVEsQ0FDbkIsTUFBK0IsRUFDL0IsTUFBZTtRQUVmLElBQUksTUFBTSxFQUFFO1lBQ1YsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztTQUM1QztRQUNELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztTQUNsRDtRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQztRQUNwRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG4vKipcbiAqIFRlbXBsYXRlIGZ1bmN0aW9uIHR5cGUuXG4gKiBVc2VkIGZvciBwYWdlIHRpdGxlIG9yIG90aGVyIGRhdGEgdG8gc3RyaW5nIG9wZXJhdGlvbnMuXG4gKlxuICogQHBhcmFtIGRhdGE6IG9iamVjdFxuICogQHBhcmFtIHBhdGg6IG9wdGlvbmFsIHBhdGggKHNlZTogdXNhZ2UpXG4gKi9cbmV4cG9ydCB0eXBlIFRwbEZuPFQ+ID0gKGRhdGE6IFQsIHBhdGg/OiBzdHJpbmcpID0+IHN0cmluZztcblxuLyoqXG4gKiBCYXNlIHJvdXRlIHBhcmFtZXRlcnMgaW50ZXJmYWNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VSb3V0ZVBhcmFtcyB7XG4gIC8qKiBTa2lwIHJvdXRlIGluIGJyZWFkY3J1bWJzICovXG4gIHNraXA/OiBib29sZWFuO1xuICAvKiogUm91dGUgdGl0bGUgb3IgdGl0bGUgdGVtcGxhdGUgKi9cbiAgdGl0bGU/OiBzdHJpbmcgfCBUcGxGbjxhbnk+O1xuICAvKiogUm91dGUgaWNvbiBzdHJpbmcgKi9cbiAgaWNvbj86IHN0cmluZztcbiAgLyoqIFJvdXRlIGNvbmZpZyBpdGVtICovXG4gIHJvdXRlOiBSb3V0ZUNvbmZpZ0l0ZW07XG4gIC8qKiBUaGlzIHJvdXRlIGlzIGEgdHJlZSByb3V0ZSAqL1xuICB0cmVlPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBSb3V0ZSBmdW5jdGlvbiB0eXBlLlxuICogVGFrZXMgcGFyYW1ldGVycywgcmV0dXJuIGEgcm91dGUuXG4gKi9cbmV4cG9ydCB0eXBlIFJvdXRlRm4gPSAoLi4uYXJnczogYW55W10pID0+IChzdHJpbmcgfCBudW1iZXIpW107XG5cbi8qKlxuICogUm91dGUgY29uZmlnIGl0ZW0uXG4gKiBTdG9yZXMgcm91dGUgbmFtZWQgcGFyYW1ldGVycywgcm91dGUgZnVuY3Rpb24gYW5kIHJvdXRlIG5hbWUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUm91dGVDb25maWdJdGVtIHtcbiAgcGFyYW1zOiBzdHJpbmdbXTtcbiAgcm91dGU6IFJvdXRlRm47XG4gIG5hbWU6IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFJEYXRhPFQgZXh0ZW5kcyBCYXNlUm91dGVQYXJhbXM+KHZhbHVlOiBUKSB7XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuZXhwb3J0IHR5cGUgUm91dGVzQ29uZmlnPFQgZXh0ZW5kcyBzdHJpbmc+ID0ge1xuICByZWFkb25seSBbUHJvcGVydHkgaW4gVF06IFJvdXRlQ29uZmlnSXRlbTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RyaWN0Um91dGVzIGV4dGVuZHMgUm91dGUge1xuICBkYXRhOiBCYXNlUm91dGVQYXJhbXM7XG59XG5cbmV4cG9ydCB0eXBlIFJvdXRlc0RlZmluaXRpb24gPSBTdHJpY3RSb3V0ZXNbXTtcblxuaW50ZXJmYWNlIFJvdXRlQXJnPFQ+IHtcbiAgW2luZGV4OiBzdHJpbmddOiBUO1xufVxuXG5leHBvcnQgY2xhc3MgTGluazxUPiB7XG4gIHByaXZhdGUgX2NhcmdzOiB7IFtpbmRleDogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgcHJpdmF0ZSBfcGFyYW1zOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIF9yb3V0ZTogUm91dGVGbjtcbiAgcHJpdmF0ZSBfcm91dGVyPzogUm91dGVyO1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogUm91dGVDb25maWdJdGVtLCBjb250ZXh0OiBhbnksIHJvdXRlcj86IFJvdXRlcikge1xuICAgIHRoaXMuX3BhcmFtcyA9IGNvbmZpZy5wYXJhbXMgfHwgW107XG4gICAgdGhpcy5fcm91dGUgPSBjb25maWcucm91dGU7XG4gICAgdGhpcy5fcm91dGVyID0gcm91dGVyO1xuICAgIHRoaXMuX25hbWUgPSBjb25maWcubmFtZTtcbiAgICBpZiAoY29udGV4dCkge1xuICAgICAgdGhpcy5jb250ZXh0KGNvbnRleHQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX25hbWUhOiBzdHJpbmc7XG5cbiAgcHVibGljIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX25hbWU7XG4gIH1cblxuICBwdWJsaWMgY29udGV4dChjdHg6IGFueSk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgbiBvZiB0aGlzLl9wYXJhbXMpIHtcbiAgICAgIGlmIChjdHggJiYgY3R4W25dKSB7XG4gICAgICAgIHRoaXMuX2NhcmdzW25dID0gY3R4W25dO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fY2FyZ3Nbbl0gPSBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByb3V0ZShwYXJhbXM/OiBSZXF1aXJlZDxSb3V0ZUFyZzxUPj4pOiAoc3RyaW5nIHwgbnVtYmVyKVtdIHtcbiAgICBjb25zdCByYXJnczogYW55W10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IG4gb2YgdGhpcy5fcGFyYW1zKSB7XG4gICAgICBpZiAocGFyYW1zICYmIHBhcmFtc1tuXSAhPT0gdW5kZWZpbmVkICYmIHBhcmFtc1tuXSAhPT0gbnVsbCkge1xuICAgICAgICByYXJncy5wdXNoKHBhcmFtc1tuXSk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuX2NhcmdzW25dICE9PSB1bmRlZmluZWQgJiYgdGhpcy5fY2FyZ3Nbbl0gIT09IG51bGwpIHtcbiAgICAgICAgcmFyZ3MucHVzaCh0aGlzLl9jYXJnc1tuXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdNaXNzaW5nIHJvdXRlIHBhcmFtZXRlcicsIG4pO1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgfVxuICAgIC8vIFNFRTogQ2hlY2sgZm9yIHVuZGVmaW5lZCBpbiByYXJnc1xuICAgIHJldHVybiB0aGlzLl9yb3V0ZSguLi5yYXJncyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbmF2aWdhdGUoXG4gICAgcGFyYW1zPzogeyBbaW5kZXg6IHN0cmluZ106IFQgfSxcbiAgICByb3V0ZXI/OiBSb3V0ZXJcbiAgKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKHJvdXRlcikge1xuICAgICAgcmV0dXJuIHJvdXRlci5uYXZpZ2F0ZSh0aGlzLnJvdXRlKHBhcmFtcykpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fcm91dGVyKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcm91dGVyLm5hdmlnYXRlKHRoaXMucm91dGUocGFyYW1zKSk7XG4gICAgfVxuICAgIGNvbnNvbGUuZXJyb3IoJ1JvdXRlciBub3QgcHJvdmlkZWQsIG5vIG5hdmlnYXRpb24nKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,6 @@
1
+ export * from "./interfaces";
2
+ export * from "./ng-file-drop.directive";
3
+ export * from "./ng-file-select.directive";
4
+ export * from "./ngx-uploader.class";
5
+ export * from "./ngx-uploader.module";
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhL3NyYy9saWIvdXBsb2FkZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2ludGVyZmFjZXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL25nLWZpbGUtZHJvcC5kaXJlY3RpdmVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL25nLWZpbGUtc2VsZWN0LmRpcmVjdGl2ZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbmd4LXVwbG9hZGVyLmNsYXNzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9uZ3gtdXBsb2FkZXIubW9kdWxlXCI7XG4iXX0=
@@ -0,0 +1,8 @@
1
+ export var UploadStatus;
2
+ (function (UploadStatus) {
3
+ UploadStatus[UploadStatus["Queue"] = 0] = "Queue";
4
+ UploadStatus[UploadStatus["Uploading"] = 1] = "Uploading";
5
+ UploadStatus[UploadStatus["Done"] = 2] = "Done";
6
+ UploadStatus[UploadStatus["Cancelled"] = 3] = "Cancelled";
7
+ })(UploadStatus || (UploadStatus = {}));
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEvc3JjL2xpYi91cGxvYWRlci9pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWFBLE1BQU0sQ0FBTixJQUFZLFlBS1g7QUFMRCxXQUFZLFlBQVk7SUFDdEIsaURBQUssQ0FBQTtJQUNMLHlEQUFTLENBQUE7SUFDVCwrQ0FBSSxDQUFBO0lBQ0oseURBQVMsQ0FBQTtBQUNYLENBQUMsRUFMVyxZQUFZLEtBQVosWUFBWSxRQUt2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tIFwicnhqc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVwbG9hZGVyT3B0aW9ucyB7XG4gIGNvbmN1cnJlbmN5OiBudW1iZXI7XG4gIGFsbG93ZWRDb250ZW50VHlwZXM/OiBzdHJpbmdbXTtcbiAgbWF4VXBsb2Fkcz86IG51bWJlcjtcbiAgbWF4RmlsZVNpemU/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmxvYkZpbGUgZXh0ZW5kcyBCbG9iIHtcbiAgbmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgZW51bSBVcGxvYWRTdGF0dXMge1xuICBRdWV1ZSxcbiAgVXBsb2FkaW5nLFxuICBEb25lLFxuICBDYW5jZWxsZWRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGxvYWRQcm9ncmVzcyB7XG4gIHN0YXR1czogVXBsb2FkU3RhdHVzO1xuICBkYXRhPzoge1xuICAgIHBlcmNlbnRhZ2U6IG51bWJlcjtcbiAgICBzcGVlZDogbnVtYmVyO1xuICAgIHNwZWVkSHVtYW46IHN0cmluZztcbiAgICBzdGFydFRpbWU6IG51bWJlciB8IG51bGw7XG4gICAgZW5kVGltZTogbnVtYmVyIHwgbnVsbDtcbiAgICBldGE6IG51bWJlciB8IG51bGw7XG4gICAgZXRhSHVtYW46IHN0cmluZyB8IG51bGw7XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXBsb2FkRmlsZSB7XG4gIGlkOiBzdHJpbmc7XG4gIGZpbGVJbmRleDogbnVtYmVyO1xuICBsYXN0TW9kaWZpZWREYXRlOiBEYXRlO1xuICBuYW1lOiBzdHJpbmc7XG4gIHNpemU6IG51bWJlcjtcbiAgdHlwZTogc3RyaW5nO1xuICBmb3JtOiBGb3JtRGF0YTtcbiAgcHJvZ3Jlc3M6IFVwbG9hZFByb2dyZXNzO1xuICByZXNwb25zZT86IGFueTtcbiAgcmVzcG9uc2VTdGF0dXM/OiBudW1iZXI7XG4gIHN1Yj86IFN1YnNjcmlwdGlvbiB8IGFueTtcbiAgbmF0aXZlRmlsZT86IEZpbGU7XG4gIHJlc3BvbnNlSGVhZGVycz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXBsb2FkT3V0cHV0IHtcbiAgdHlwZTogXCJhZGRlZFRvUXVldWVcIiB8IFwiYWxsQWRkZWRUb1F1ZXVlXCIgfCBcInVwbG9hZGluZ1wiIHwgXCJkb25lXCIgfCBcInN0YXJ0XCIgfCBcImNhbmNlbGxlZFwiIHwgXCJkcmFnT3ZlclwiXG4gICAgfCBcImRyYWdPdXRcIiB8IFwiZHJvcFwiIHwgXCJyZW1vdmVkXCIgfCBcInJlbW92ZWRBbGxcIiB8IFwicmVqZWN0ZWRcIjtcbiAgZmlsZT86IFVwbG9hZEZpbGU7XG4gIG5hdGl2ZUZpbGU/OiBGaWxlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVwbG9hZElucHV0IHtcbiAgdHlwZTogXCJ1cGxvYWRBbGxcIiB8IFwidXBsb2FkRmlsZVwiIHwgXCJjYW5jZWxcIiB8IFwiY2FuY2VsQWxsXCIgfCBcInJlbW92ZVwiIHwgXCJyZW1vdmVBbGxcIjtcbiAgdXJsPzogc3RyaW5nO1xuICBtZXRob2Q/OiBzdHJpbmc7XG4gIGlkPzogc3RyaW5nO1xuICBmaWVsZE5hbWU/OiBzdHJpbmc7XG4gIGZpbGVJbmRleD86IG51bWJlcjtcbiAgZmlsZT86IFVwbG9hZEZpbGU7XG4gIGRhdGE/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IEJsb2IgfTtcbiAgaGVhZGVycz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG4gIGluY2x1ZGVXZWJLaXRGb3JtQm91bmRhcnk/OiBib29sZWFuOyAvLyBJZiBmYWxzZSwgb25seSB0aGUgZmlsZSBpcyBzZW5kIHRyb3VnaCB4aHIuc2VuZCAoV2ViS2l0Rm9ybUJvdW5kYXJ5IGlzIG9taXQpXG4gIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG59XG4iXX0=
@@ -0,0 +1,81 @@
1
+ import { Directive, EventEmitter, HostListener, Input, Output } from "@angular/core";
2
+ import { DataUploaderService } from "./ngx-uploader.class";
3
+ import * as i0 from "@angular/core";
4
+ export class NgFileDropDirective {
5
+ constructor(elementRef) {
6
+ this.elementRef = elementRef;
7
+ this.stopEvent = (e) => {
8
+ e.stopPropagation();
9
+ e.preventDefault();
10
+ };
11
+ this.uploadOutput = new EventEmitter();
12
+ }
13
+ ngOnInit() {
14
+ this._sub = [];
15
+ const concurrency = this.options && this.options.concurrency || Number.POSITIVE_INFINITY;
16
+ const allowedContentTypes = this.options && this.options.allowedContentTypes || ["*"];
17
+ const maxUploads = this.options && this.options.maxUploads || Number.POSITIVE_INFINITY;
18
+ const maxFileSize = this.options && this.options.maxFileSize || Number.POSITIVE_INFINITY;
19
+ this.upload = new DataUploaderService(concurrency, allowedContentTypes, maxUploads, maxFileSize);
20
+ this.el = this.elementRef.nativeElement;
21
+ this._sub.push(this.upload.serviceEvents.subscribe((event) => {
22
+ this.uploadOutput.emit(event);
23
+ }));
24
+ if (this.uploadInput instanceof EventEmitter) {
25
+ this._sub.push(this.upload.initInputEvents(this.uploadInput));
26
+ }
27
+ this.el.addEventListener("drop", this.stopEvent, false);
28
+ this.el.addEventListener("dragenter", this.stopEvent, false);
29
+ this.el.addEventListener("dragover", this.stopEvent, false);
30
+ }
31
+ ngOnDestroy() {
32
+ if (this._sub) {
33
+ this._sub.forEach(sub => sub.unsubscribe());
34
+ }
35
+ }
36
+ onDrop(e) {
37
+ e.stopPropagation();
38
+ e.preventDefault();
39
+ const event = { type: "drop" };
40
+ this.uploadOutput.emit(event);
41
+ this.upload.handleFiles(e.dataTransfer.files);
42
+ }
43
+ onDragOver(e) {
44
+ if (!e) {
45
+ return;
46
+ }
47
+ const event = { type: "dragOver" };
48
+ this.uploadOutput.emit(event);
49
+ }
50
+ onDragLeave(e) {
51
+ if (!e) {
52
+ return;
53
+ }
54
+ const event = { type: "dragOut" };
55
+ this.uploadOutput.emit(event);
56
+ }
57
+ }
58
+ NgFileDropDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: NgFileDropDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
59
+ NgFileDropDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.1.0", type: NgFileDropDirective, selector: "[dataFileDrop]", inputs: { options: "options", uploadInput: "uploadInput" }, outputs: { uploadOutput: "uploadOutput" }, host: { listeners: { "drop": "onDrop($event)", "dragover": "onDragOver($event)", "dragleave": "onDragLeave($event)" } }, ngImport: i0 });
60
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: NgFileDropDirective, decorators: [{
61
+ type: Directive,
62
+ args: [{
63
+ selector: "[dataFileDrop]"
64
+ }]
65
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { options: [{
66
+ type: Input
67
+ }], uploadInput: [{
68
+ type: Input
69
+ }], uploadOutput: [{
70
+ type: Output
71
+ }], onDrop: [{
72
+ type: HostListener,
73
+ args: ["drop", ["$event"]]
74
+ }], onDragOver: [{
75
+ type: HostListener,
76
+ args: ["dragover", ["$event"]]
77
+ }], onDragLeave: [{
78
+ type: HostListener,
79
+ args: ["dragleave", ["$event"]]
80
+ }] } });
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctZmlsZS1kcm9wLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEvc3JjL2xpYi91cGxvYWRlci9uZy1maWxlLWRyb3AuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQWMsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVsSCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQzs7QUFNekQsTUFBTSxPQUFPLG1CQUFtQjtJQVU5QixZQUFtQixVQUFzQjtRQUF0QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBbUN6QyxjQUFTLEdBQUcsQ0FBQyxDQUFRLEVBQUUsRUFBRTtZQUN2QixDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDcEIsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3JCLENBQUMsQ0FBQztRQXJDQSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksWUFBWSxFQUFnQixDQUFDO0lBQ3ZELENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7UUFDZixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxJQUFJLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQztRQUN6RixNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RGLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLElBQUksTUFBTSxDQUFDLGlCQUFpQixDQUFDO1FBQ3ZGLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFP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QUM7Z0JBVzdCLFdBQVc7c0JBRGpCLFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7VXBsb2FkZXJPcHRpb25zLCBVcGxvYWRJbnB1dCwgVXBsb2FkT3V0cHV0fSBmcm9tIFwiLi9pbnRlcmZhY2VzXCI7XG5pbXBvcnQge0RhdGFVcGxvYWRlclNlcnZpY2V9IGZyb20gXCIuL25neC11cGxvYWRlci5jbGFzc1wiO1xuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gXCJyeGpzXCI7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogXCJbZGF0YUZpbGVEcm9wXVwiXG59KVxuZXhwb3J0IGNsYXNzIE5nRmlsZURyb3BEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIG9wdGlvbnMhOiBVcGxvYWRlck9wdGlvbnM7XG4gIEBJbnB1dCgpIHVwbG9hZElucHV0ITogRXZlbnRFbWl0dGVyPFVwbG9hZElucHV0PjtcbiAgQE91dHB1dCgpIHVwbG9hZE91dHB1dDogRXZlbnRFbWl0dGVyPFVwbG9hZE91dHB1dD47XG5cbiAgcHVibGljIHVwbG9hZCE6IERhdGFVcGxvYWRlclNlcnZpY2U7XG4gIHB1YmxpYyBlbCE6IEhUTUxJbnB1dEVsZW1lbnQ7XG5cbiAgcHJpdmF0ZSBfc3ViITogU3Vic2NyaXB0aW9uW107XG5cbiAgY29uc3RydWN0b3IocHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHtcbiAgICB0aGlzLnVwbG9hZE91dHB1dCA9IG5ldyBFdmVudEVtaXR0ZXI8VXBsb2FkT3V0cHV0PigpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5fc3ViID0gW107XG4gICAgY29uc3QgY29uY3VycmVuY3kgPSB0aGlzLm9wdGlvbnMgJiYgdGhpcy5vcHRpb25zLmNvbmN1cnJlbmN5IHx8IE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcbiAgICBjb25zdCBhbGxvd2VkQ29udGVudFR5cGVzID0gdGhpcy5vcHRpb25zICYmIHRoaXMub3B0aW9ucy5hbGxvd2VkQ29udGVudFR5cGVzIHx8IFtcIipcIl07XG4gICAgY29uc3QgbWF4VXBsb2FkcyA9IHRoaXMub3B0aW9ucyAmJiB0aGlzLm9wdGlvbnMubWF4VXBsb2FkcyB8fCBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7XG4gICAgY29uc3QgbWF4RmlsZVNpemUgPSB0aGlzLm9wdGlvbnMgJiYgdGhpcy5vcHRpb25zLm1heEZpbGVTaXplIHx8IE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcbiAgICB0aGlzLnVwbG9hZCA9IG5ldyBEYXRhVXBsb2FkZXJTZXJ2aWNlKGNvbmN1cnJlbmN5LCBhbGxvd2VkQ29udGVudFR5cGVzLCBtYXhVcGxvYWRzLCBtYXhGaWxlU2l6ZSk7XG5cbiAgICB0aGlzLmVsID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICB0aGlzLl9zdWIucHVzaChcbiAgICAgIHRoaXMudXBsb2FkLnNlcnZpY2VFdmVudHMuc3Vic2NyaWJlKChldmVudDogVXBsb2FkT3V0cHV0KSA9PiB7XG4gICAgICAgIHRoaXMudXBsb2FkT3V0cHV0LmVtaXQoZXZlbnQpO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgaWYgKHRoaXMudXBsb2FkSW5wdXQgaW5zdGFuY2VvZiBFdmVudEVtaXR0ZXIpIHtcbiAgICAgIHRoaXMuX3N1Yi5wdXNoKHRoaXMudXBsb2FkLmluaXRJbnB1dEV2ZW50cyh0aGlzLnVwbG9hZElucHV0KSk7XG4gICAgfVxuXG4gICAgdGhpcy5lbC5hZGRFdmVudExpc3RlbmVyKFwiZHJvcFwiLCB0aGlzLnN0b3BFdmVudCwgZmFsc2UpO1xuICAgIHRoaXMuZWwuYWRkRXZlbnRMaXN0ZW5lcihcImRyYWdlbnRlclwiLCB0aGlzLnN0b3BFdmVudCwgZmFsc2UpO1xuICAgIHRoaXMuZWwuYWRkRXZlbnRMaXN0ZW5lcihcImRyYWdvdmVyXCIsIHRoaXMuc3RvcEV2ZW50LCBmYWxzZSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5fc3ViKSB7XG4gICAgICB0aGlzLl9zdWIuZm9yRWFjaChzdWIgPT4gc3ViLnVuc3Vic2NyaWJlKCkpO1xuICAgIH1cbiAgfVxuXG4gIHN0b3BFdmVudCA9IChlOiBFdmVudCkgPT4ge1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICB9O1xuXG4gIEBIb3N0TGlzdGVuZXIoXCJkcm9wXCIsIFtcIiRldmVudFwiXSlcbiAgcHVibGljIG9uRHJvcChlOiBhbnkpIHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcblxuICAgIGNvbnN0IGV2ZW50OiBVcGxvYWRPdXRwdXQgPSB7dHlwZTogXCJkcm9wXCJ9O1xuICAgIHRoaXMudXBsb2FkT3V0cHV0LmVtaXQoZXZlbnQpO1xuICAgIHRoaXMudXBsb2FkLmhhbmRsZUZpbGVzKGUuZGF0YVRyYW5zZmVyLmZpbGVzKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoXCJkcmFnb3ZlclwiLCBbXCIkZXZlbnRcIl0pXG4gIHB1YmxpYyBvbkRyYWdPdmVyKGU6IEV2ZW50KSB7XG4gICAgaWYgKCFlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZXZlbnQ6IFVwbG9hZE91dHB1dCA9IHt0eXBlOiBcImRyYWdPdmVyXCJ9O1xuICAgIHRoaXMudXBsb2FkT3V0cHV0LmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcihcImRyYWdsZWF2ZVwiLCBbXCIkZXZlbnRcIl0pXG4gIHB1YmxpYyBvbkRyYWdMZWF2ZShlOiBFdmVudCkge1xuICAgIGlmICghZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGV2ZW50OiBVcGxvYWRPdXRwdXQgPSB7dHlwZTogXCJkcmFnT3V0XCJ9O1xuICAgIHRoaXMudXBsb2FkT3V0cHV0LmVtaXQoZXZlbnQpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,51 @@
1
+ import { Directive, EventEmitter, Input, Output } from "@angular/core";
2
+ import { DataUploaderService } from "./ngx-uploader.class";
3
+ import * as i0 from "@angular/core";
4
+ export class NgFileSelectDirective {
5
+ constructor(elementRef) {
6
+ this.elementRef = elementRef;
7
+ this.fileListener = () => {
8
+ if (this.el.files) {
9
+ this.upload.handleFiles(this.el.files);
10
+ }
11
+ };
12
+ this.uploadOutput = new EventEmitter();
13
+ }
14
+ ngOnInit() {
15
+ this._sub = [];
16
+ const concurrency = this.options && this.options.concurrency || Number.POSITIVE_INFINITY;
17
+ const allowedContentTypes = this.options && this.options.allowedContentTypes || ["*"];
18
+ const maxUploads = this.options && this.options.maxUploads || Number.POSITIVE_INFINITY;
19
+ const maxFileSize = this.options && this.options.maxFileSize || Number.POSITIVE_INFINITY;
20
+ this.upload = new DataUploaderService(concurrency, allowedContentTypes, maxUploads, maxFileSize);
21
+ this.el = this.elementRef.nativeElement;
22
+ this.el.addEventListener("change", this.fileListener, false);
23
+ this._sub.push(this.upload.serviceEvents.subscribe((event) => {
24
+ this.uploadOutput.emit(event);
25
+ }));
26
+ if (this.uploadInput instanceof EventEmitter) {
27
+ this._sub.push(this.upload.initInputEvents(this.uploadInput));
28
+ }
29
+ }
30
+ ngOnDestroy() {
31
+ if (this.el) {
32
+ this.el.removeEventListener("change", this.fileListener, false);
33
+ this._sub.forEach(sub => sub.unsubscribe());
34
+ }
35
+ }
36
+ }
37
+ NgFileSelectDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: NgFileSelectDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
38
+ NgFileSelectDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.1.0", type: NgFileSelectDirective, selector: "[dataFileSelect]", inputs: { options: "options", uploadInput: "uploadInput" }, outputs: { uploadOutput: "uploadOutput" }, ngImport: i0 });
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: NgFileSelectDirective, decorators: [{
40
+ type: Directive,
41
+ args: [{
42
+ selector: "[dataFileSelect]"
43
+ }]
44
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { options: [{
45
+ type: Input
46
+ }], uploadInput: [{
47
+ type: Input
48
+ }], uploadOutput: [{
49
+ type: Output
50
+ }] } });
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctZmlsZS1zZWxlY3QuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS9zcmMvbGliL3VwbG9hZGVyL25nLWZpbGUtc2VsZWN0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVwRyxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQzs7QUFNekQsTUFBTSxPQUFPLHFCQUFxQjtJQVVoQyxZQUFtQixVQUFzQjtRQUF0QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBaUN6QyxpQkFBWSxHQUFHLEdBQUcsRUFBRTtZQUNsQixJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFO2dCQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3hDO1FBQ0gsQ0FBQyxDQUFDO1FBcENBLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxZQUFZLEVBQWdCLENBQUM7SUFDdkQsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNmLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLElBQUksTUFBTSxDQUFDLGlCQUFpQixDQUFDO1FBQ3pGLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEYsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsSUFBSSxNQUFNLENBQUMsaUJBQWlCLENBQUM7UUFDdkYsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsSUFBSSxNQUFNLENBQUMsaUJBQWlCLENBQUM7UUFDekYsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFFakcsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztRQUN4QyxJQUFJLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRTdELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUNaLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQW1CLEVBQUUsRUFBRTtZQUMxRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FDSCxDQUFDO1FBRUYsSUFBSSxJQUFJLENBQUMsV0FBVyxZQUFZLFlBQVksRUFBRTtZQUM1QyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztTQUMvRDtJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQ1gsSUFBSSxDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNoRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1NBQzdDO0lBQ0gsQ0FBQzs7a0hBekNVLHFCQUFxQjtzR0FBckIscUJBQXFCOzJGQUFyQixxQkFBcUI7a0JBSGpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtpQkFDN0I7aUdBRVUsT0FBTztzQkFBZixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0ksWUFBWTtzQkFBckIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0fSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtVcGxvYWRlck9wdGlvbnMsIFVwbG9hZE91dHB1dH0gZnJvbSBcIi4vaW50ZXJmYWNlc1wiO1xuaW1wb3J0IHtEYXRhVXBsb2FkZXJTZXJ2aWNlfSBmcm9tIFwiLi9uZ3gtdXBsb2FkZXIuY2xhc3NcIjtcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tIFwicnhqc1wiO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6IFwiW2RhdGFGaWxlU2VsZWN0XVwiXG59KVxuZXhwb3J0IGNsYXNzIE5nRmlsZVNlbGVjdERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgb3B0aW9ucyE6IFVwbG9hZGVyT3B0aW9ucztcbiAgQElucHV0KCkgdXBsb2FkSW5wdXQhOiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQE91dHB1dCgpIHVwbG9hZE91dHB1dDogRXZlbnRFbWl0dGVyPFVwbG9hZE91dHB1dD47XG5cbiAgcHVibGljIHVwbG9hZCE6IERhdGFVcGxvYWRlclNlcnZpY2U7XG4gIHB1YmxpYyBlbCE6IEhUTUxJbnB1dEVsZW1lbnQ7XG5cbiAgcHJpdmF0ZSBfc3ViITogU3Vic2NyaXB0aW9uW107XG5cbiAgY29uc3RydWN0b3IocHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHtcbiAgICB0aGlzLnVwbG9hZE91dHB1dCA9IG5ldyBFdmVudEVtaXR0ZXI8VXBsb2FkT3V0cHV0PigpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5fc3ViID0gW107XG4gICAgY29uc3QgY29uY3VycmVuY3kgPSB0aGlzLm9wdGlvbnMgJiYgdGhpcy5vcHRpb25zLmNvbmN1cnJlbmN5IHx8IE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcbiAgICBjb25zdCBhbGxvd2VkQ29udGVudFR5cGVzID0gdGhpcy5vcHRpb25zICYmIHRoaXMub3B0aW9ucy5hbGxvd2VkQ29udGVudFR5cGVzIHx8IFtcIipcIl07XG4gICAgY29uc3QgbWF4VXBsb2FkcyA9IHRoaXMub3B0aW9ucyAmJiB0aGlzLm9wdGlvbnMubWF4VXBsb2FkcyB8fCBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7XG4gICAgY29uc3QgbWF4RmlsZVNpemUgPSB0aGlzLm9wdGlvbnMgJiYgdGhpcy5vcHRpb25zLm1heEZpbGVTaXplIHx8IE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcbiAgICB0aGlzLnVwbG9hZCA9IG5ldyBEYXRhVXBsb2FkZXJTZXJ2aWNlKGNvbmN1cnJlbmN5LCBhbGxvd2VkQ29udGVudFR5cGVzLCBtYXhVcGxvYWRzLCBtYXhGaWxlU2l6ZSk7XG5cbiAgICB0aGlzLmVsID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgdGhpcy5lbC5hZGRFdmVudExpc3RlbmVyKFwiY2hhbmdlXCIsIHRoaXMuZmlsZUxpc3RlbmVyLCBmYWxzZSk7XG5cbiAgICB0aGlzLl9zdWIucHVzaChcbiAgICAgIHRoaXMudXBsb2FkLnNlcnZpY2VFdmVudHMuc3Vic2NyaWJlKChldmVudDogVXBsb2FkT3V0cHV0KSA9PiB7XG4gICAgICAgIHRoaXMudXBsb2FkT3V0cHV0LmVtaXQoZXZlbnQpO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgaWYgKHRoaXMudXBsb2FkSW5wdXQgaW5zdGFuY2VvZiBFdmVudEVtaXR0ZXIpIHtcbiAgICAgIHRoaXMuX3N1Yi5wdXNoKHRoaXMudXBsb2FkLmluaXRJbnB1dEV2ZW50cyh0aGlzLnVwbG9hZElucHV0KSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuZWwpIHtcbiAgICAgIHRoaXMuZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNoYW5nZVwiLCB0aGlzLmZpbGVMaXN0ZW5lciwgZmFsc2UpO1xuICAgICAgdGhpcy5fc3ViLmZvckVhY2goc3ViID0+IHN1Yi51bnN1YnNjcmliZSgpKTtcbiAgICB9XG4gIH1cblxuICBmaWxlTGlzdGVuZXIgPSAoKSA9PiB7XG4gICAgaWYgKHRoaXMuZWwuZmlsZXMpIHtcbiAgICAgIHRoaXMudXBsb2FkLmhhbmRsZUZpbGVzKHRoaXMuZWwuZmlsZXMpO1xuICAgIH1cbiAgfTtcbn1cbiJdfQ==