@entake/particle 18.0.4 → 19.0.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 (207) hide show
  1. package/LICENSE +1 -1
  2. package/app/{modules → shared/components}/accordion/accordion.component.d.ts +3 -3
  3. package/app/{modules/date-picker → shared}/components/calendar/calendar.component.d.ts +7 -12
  4. package/app/{modules → shared/components}/checkbox/checkbox.component.d.ts +5 -7
  5. package/app/{modules → shared/components}/color-picker/color-picker.component.d.ts +3 -9
  6. package/app/{modules → shared/components}/date-picker/date-picker.component.d.ts +20 -26
  7. package/app/{modules/date-picker → shared}/components/date-range-picker/date-range-picker.component.d.ts +10 -11
  8. package/app/{modules → shared/components}/dialog/dialog.component.d.ts +14 -24
  9. package/app/{modules → shared/components}/dropdown/dropdown.component.d.ts +12 -14
  10. package/app/{modules/icons/components → shared/components/icon-select}/icon-select.component.d.ts +14 -17
  11. package/app/{modules → shared/components}/idle-timeout/idle-timeout.component.d.ts +3 -4
  12. package/app/{modules → shared/components}/input-mask/input-mask.component.d.ts +6 -7
  13. package/app/shared/components/layout-full-framing/layout-full-framing.component.d.ts +27 -0
  14. package/app/shared/components/layout-fullwidth-sidebar/layout-fullwidth-sidebar.component.d.ts +23 -0
  15. package/app/{modules/loader/components → shared/components/loader}/loader.component.d.ts +2 -2
  16. package/app/{modules → shared/components}/multi-select/multi-select.component.d.ts +18 -24
  17. package/app/{modules → shared/components}/notification/notification.component.d.ts +5 -13
  18. package/app/{modules → shared/components}/paginator/paginator.component.d.ts +12 -11
  19. package/app/{modules → shared/components}/popover/popover.component.d.ts +10 -15
  20. package/app/{modules → shared/components}/profile-pic/profile-pic.component.d.ts +1 -1
  21. package/app/shared/components/progress-bar/progress-bar.component.d.ts +15 -0
  22. package/app/{modules → shared/components}/rich-text/rich-text.component.d.ts +11 -12
  23. package/app/shared/components/scroll-to-top/scroll-to-top.component.d.ts +18 -0
  24. package/app/shared/components/slideover/slideover.component.d.ts +35 -0
  25. package/app/{modules → shared/components}/slider/slider.component.d.ts +8 -22
  26. package/app/{modules → shared/components}/toggle-switch/toggle-switch.component.d.ts +4 -6
  27. package/app/{modules → shared/components}/week-picker/week-picker.component.d.ts +21 -22
  28. package/app/{modules/accordion → shared}/directives/accordion-content.directive.d.ts +1 -2
  29. package/app/{modules/accordion → shared}/directives/accordion-header.directive.d.ts +1 -2
  30. package/app/{modules/accordion → shared}/directives/accordion-item.directive.d.ts +1 -1
  31. package/app/{modules/background-carousel → shared/directives}/background-carousel.directive.d.ts +4 -4
  32. package/app/{modules/keyfilter → shared/directives}/keyfilter.directive.d.ts +1 -7
  33. package/app/{modules/tooltip → shared/directives}/tooltip.directive.d.ts +3 -9
  34. package/app/shared/models/carousel-options.model.d.ts +21 -0
  35. package/app/shared/models/pagination-event.model.d.ts +8 -0
  36. package/app/shared/models/particle-component-text.model.d.ts +0 -24
  37. package/app/shared/modules/icons/particle-icons.module.d.ts +7 -0
  38. package/app/{modules/ordinal-number-pipe → shared/pipes}/ordinal-number.pipe.d.ts +1 -1
  39. package/app/shared/services/base-data.service.d.ts +2 -2
  40. package/app/shared/services/dialog.service.d.ts +1 -1
  41. package/app/{modules/notification → shared}/services/notification.service.d.ts +0 -4
  42. package/app/{modules/theming → shared}/services/theming.service.d.ts +0 -19
  43. package/fesm2022/entake-particle.mjs +3873 -5572
  44. package/fesm2022/entake-particle.mjs.map +1 -1
  45. package/package.json +16 -25
  46. package/public_api.d.ts +47 -82
  47. package/app/modules/accordion/accordion.module.d.ts +0 -11
  48. package/app/modules/background-carousel/carousel-options.model.d.ts +0 -30
  49. package/app/modules/background-carousel/particle-background-carousel.module.d.ts +0 -8
  50. package/app/modules/checkbox/checkbox.module.d.ts +0 -9
  51. package/app/modules/color-picker/color-picker.module.d.ts +0 -9
  52. package/app/modules/date-picker/date-picker.module.d.ts +0 -15
  53. package/app/modules/dialog/dialog.module.d.ts +0 -9
  54. package/app/modules/dropdown/dropdown.module.d.ts +0 -9
  55. package/app/modules/endpoint-state/components/endpoint-state.component.d.ts +0 -46
  56. package/app/modules/endpoint-state/endpoint-state.module.d.ts +0 -8
  57. package/app/modules/icons/particle-icons.module.d.ts +0 -13
  58. package/app/modules/idle-timeout/particle-idle-timeout.module.d.ts +0 -9
  59. package/app/modules/input-mask/input-mask.module.d.ts +0 -8
  60. package/app/modules/keyfilter/keyfilter.module.d.ts +0 -8
  61. package/app/modules/layout/components/layout-full-framing/layout-full-framing.component.d.ts +0 -27
  62. package/app/modules/layout/components/layout-fullwidth-sidebar/layout-fullwidth-sidebar.component.d.ts +0 -23
  63. package/app/modules/layout/layout.module.d.ts +0 -10
  64. package/app/modules/loader/loader.module.d.ts +0 -8
  65. package/app/modules/multi-select/multi-select.module.d.ts +0 -8
  66. package/app/modules/notification/notification.module.d.ts +0 -8
  67. package/app/modules/ordinal-number-pipe/ordinal-number-pipe.module.d.ts +0 -8
  68. package/app/modules/paginator/pagination-event.model.d.ts +0 -24
  69. package/app/modules/paginator/particle-paginator.module.d.ts +0 -13
  70. package/app/modules/popover/popover.module.d.ts +0 -9
  71. package/app/modules/profile-pic/particle-profile-pic.module.d.ts +0 -9
  72. package/app/modules/progress-bar/progress-bar.component.d.ts +0 -16
  73. package/app/modules/progress-bar/progress-bar.module.d.ts +0 -8
  74. package/app/modules/push-container/particle-push-container.module.d.ts +0 -9
  75. package/app/modules/push-container/push-container-state.model.d.ts +0 -7
  76. package/app/modules/push-container/push-container.component.d.ts +0 -137
  77. package/app/modules/rich-text/particle-rich-text.module.d.ts +0 -15
  78. package/app/modules/rich-text/render-rich-text.component.d.ts +0 -6
  79. package/app/modules/scroll-to-top/particle-scroll-to-top.module.d.ts +0 -8
  80. package/app/modules/scroll-to-top/scroll-to-top.component.d.ts +0 -19
  81. package/app/modules/slideover/particle-slideover.module.d.ts +0 -8
  82. package/app/modules/slideover/slideover.component.d.ts +0 -35
  83. package/app/modules/slider/slider.module.d.ts +0 -9
  84. package/app/modules/theming/components/theming.component.d.ts +0 -43
  85. package/app/modules/theming/theming.module.d.ts +0 -12
  86. package/app/modules/toggle-switch/toggle-switch.module.d.ts +0 -8
  87. package/app/modules/tooltip/tooltip.module.d.ts +0 -8
  88. package/app/modules/week-picker/week-picker.module.d.ts +0 -13
  89. package/app/shared/enums/endpoint-status.enum.d.ts +0 -9
  90. package/esm2022/app/modules/accordion/accordion.component.mjs +0 -101
  91. package/esm2022/app/modules/accordion/accordion.module.mjs +0 -37
  92. package/esm2022/app/modules/accordion/directives/accordion-content.directive.mjs +0 -17
  93. package/esm2022/app/modules/accordion/directives/accordion-header.directive.mjs +0 -17
  94. package/esm2022/app/modules/accordion/directives/accordion-item.directive.mjs +0 -36
  95. package/esm2022/app/modules/background-carousel/background-carousel.directive.mjs +0 -91
  96. package/esm2022/app/modules/background-carousel/carousel-options.model.mjs +0 -36
  97. package/esm2022/app/modules/background-carousel/particle-background-carousel.module.mjs +0 -24
  98. package/esm2022/app/modules/checkbox/checkbox.component.mjs +0 -108
  99. package/esm2022/app/modules/checkbox/checkbox.module.mjs +0 -28
  100. package/esm2022/app/modules/color-picker/color-picker.component.mjs +0 -306
  101. package/esm2022/app/modules/color-picker/color-picker.module.mjs +0 -19
  102. package/esm2022/app/modules/date-picker/components/calendar/calendar.component.mjs +0 -496
  103. package/esm2022/app/modules/date-picker/components/date-range-picker/date-range-picker.component.mjs +0 -250
  104. package/esm2022/app/modules/date-picker/date-picker.component.mjs +0 -538
  105. package/esm2022/app/modules/date-picker/date-picker.module.mjs +0 -56
  106. package/esm2022/app/modules/dialog/dialog.component.mjs +0 -177
  107. package/esm2022/app/modules/dialog/dialog.module.mjs +0 -28
  108. package/esm2022/app/modules/dropdown/dropdown.component.mjs +0 -682
  109. package/esm2022/app/modules/dropdown/dropdown.module.mjs +0 -28
  110. package/esm2022/app/modules/dropdown/models/dropdown-option-group.model.mjs +0 -2
  111. package/esm2022/app/modules/dropdown/models/dropdown-option.model.mjs +0 -2
  112. package/esm2022/app/modules/endpoint-state/components/endpoint-state.component.mjs +0 -75
  113. package/esm2022/app/modules/endpoint-state/endpoint-state.module.mjs +0 -22
  114. package/esm2022/app/modules/icons/components/icon-select.component.mjs +0 -376
  115. package/esm2022/app/modules/icons/models/fontawesome-icons-brands.model.mjs +0 -471
  116. package/esm2022/app/modules/icons/models/fontawesome-icons-regular.model.mjs +0 -166
  117. package/esm2022/app/modules/icons/models/fontawesome-icons-solid.model.mjs +0 -1016
  118. package/esm2022/app/modules/icons/models/particle-icons-brands.model.mjs +0 -24
  119. package/esm2022/app/modules/icons/models/particle-icons-regular.model.mjs +0 -50
  120. package/esm2022/app/modules/icons/models/particle-icons-solid.model.mjs +0 -89
  121. package/esm2022/app/modules/icons/particle-icons.module.mjs +0 -66
  122. package/esm2022/app/modules/icons/services/icons.service.mjs +0 -82
  123. package/esm2022/app/modules/idle-timeout/idle-timeout.component.mjs +0 -85
  124. package/esm2022/app/modules/idle-timeout/idle-timer.mjs +0 -66
  125. package/esm2022/app/modules/idle-timeout/particle-idle-timeout.module.mjs +0 -28
  126. package/esm2022/app/modules/input-mask/input-mask.component.mjs +0 -594
  127. package/esm2022/app/modules/input-mask/input-mask.module.mjs +0 -18
  128. package/esm2022/app/modules/keyfilter/keyfilter.directive.mjs +0 -174
  129. package/esm2022/app/modules/keyfilter/keyfilter.module.mjs +0 -18
  130. package/esm2022/app/modules/layout/components/layout-full-framing/layout-full-framing.component.mjs +0 -81
  131. package/esm2022/app/modules/layout/components/layout-fullwidth-sidebar/layout-fullwidth-sidebar.component.mjs +0 -67
  132. package/esm2022/app/modules/layout/layout.module.mjs +0 -33
  133. package/esm2022/app/modules/loader/components/loader.component.mjs +0 -30
  134. package/esm2022/app/modules/loader/loader.module.mjs +0 -24
  135. package/esm2022/app/modules/multi-select/models/multi-select-option-group.model.mjs +0 -2
  136. package/esm2022/app/modules/multi-select/models/multi-select-option.model.mjs +0 -2
  137. package/esm2022/app/modules/multi-select/multi-select.component.mjs +0 -665
  138. package/esm2022/app/modules/multi-select/multi-select.module.mjs +0 -18
  139. package/esm2022/app/modules/notification/models/notification.model.mjs +0 -2
  140. package/esm2022/app/modules/notification/notification.component.mjs +0 -122
  141. package/esm2022/app/modules/notification/notification.module.mjs +0 -18
  142. package/esm2022/app/modules/notification/services/notification.service.mjs +0 -84
  143. package/esm2022/app/modules/ordinal-number-pipe/ordinal-number-pipe.module.mjs +0 -20
  144. package/esm2022/app/modules/ordinal-number-pipe/ordinal-number.pipe.mjs +0 -49
  145. package/esm2022/app/modules/paginator/pagination-event.model.mjs +0 -29
  146. package/esm2022/app/modules/paginator/paginator.component.mjs +0 -207
  147. package/esm2022/app/modules/paginator/particle-paginator.module.mjs +0 -48
  148. package/esm2022/app/modules/popover/popover.component.mjs +0 -352
  149. package/esm2022/app/modules/popover/popover.module.mjs +0 -24
  150. package/esm2022/app/modules/profile-pic/particle-profile-pic.module.mjs +0 -28
  151. package/esm2022/app/modules/profile-pic/profile-pic.component.mjs +0 -75
  152. package/esm2022/app/modules/progress-bar/progress-bar.component.mjs +0 -43
  153. package/esm2022/app/modules/progress-bar/progress-bar.module.mjs +0 -24
  154. package/esm2022/app/modules/push-container/particle-push-container.module.mjs +0 -26
  155. package/esm2022/app/modules/push-container/push-container-state.model.mjs +0 -2
  156. package/esm2022/app/modules/push-container/push-container.component.mjs +0 -363
  157. package/esm2022/app/modules/rich-text/particle-rich-text.module.mjs +0 -64
  158. package/esm2022/app/modules/rich-text/render-rich-text.component.mjs +0 -18
  159. package/esm2022/app/modules/rich-text/rich-text-capabilities.model.mjs +0 -2
  160. package/esm2022/app/modules/rich-text/rich-text.component.mjs +0 -206
  161. package/esm2022/app/modules/scroll-to-top/particle-scroll-to-top.module.mjs +0 -24
  162. package/esm2022/app/modules/scroll-to-top/scroll-to-top.component.mjs +0 -49
  163. package/esm2022/app/modules/slideover/particle-slideover.module.mjs +0 -24
  164. package/esm2022/app/modules/slideover/slideover.component.mjs +0 -115
  165. package/esm2022/app/modules/slider/slider.component.mjs +0 -243
  166. package/esm2022/app/modules/slider/slider.module.mjs +0 -26
  167. package/esm2022/app/modules/theming/components/theming.component.mjs +0 -86
  168. package/esm2022/app/modules/theming/models/theme.model.mjs +0 -9
  169. package/esm2022/app/modules/theming/services/theme-change-detection.service.mjs +0 -38
  170. package/esm2022/app/modules/theming/services/theming.service.mjs +0 -510
  171. package/esm2022/app/modules/theming/theming.module.mjs +0 -55
  172. package/esm2022/app/modules/toggle-switch/models/toggle-options.model.mjs +0 -2
  173. package/esm2022/app/modules/toggle-switch/toggle-switch.component.mjs +0 -107
  174. package/esm2022/app/modules/toggle-switch/toggle-switch.module.mjs +0 -24
  175. package/esm2022/app/modules/tooltip/tooltip.directive.mjs +0 -381
  176. package/esm2022/app/modules/tooltip/tooltip.module.mjs +0 -18
  177. package/esm2022/app/modules/week-picker/week-picker.component.mjs +0 -511
  178. package/esm2022/app/modules/week-picker/week-picker.module.mjs +0 -40
  179. package/esm2022/app/shared/enums/endpoint-status.enum.mjs +0 -11
  180. package/esm2022/app/shared/interceptors/json.interceptor.mjs +0 -23
  181. package/esm2022/app/shared/models/auditable.model.mjs +0 -2
  182. package/esm2022/app/shared/models/data-list.model.mjs +0 -2
  183. package/esm2022/app/shared/models/id.model.mjs +0 -2
  184. package/esm2022/app/shared/models/observable-container.mjs +0 -15
  185. package/esm2022/app/shared/models/particle-component-text.model.mjs +0 -2
  186. package/esm2022/app/shared/services/base-data.service.mjs +0 -190
  187. package/esm2022/app/shared/services/dialog.service.mjs +0 -50
  188. package/esm2022/app/shared/services/local-storage.service.mjs +0 -60
  189. package/esm2022/entake-particle.mjs +0 -5
  190. package/esm2022/public_api.mjs +0 -98
  191. /package/app/{modules/dropdown → shared}/models/dropdown-option-group.model.d.ts +0 -0
  192. /package/app/{modules/dropdown → shared}/models/dropdown-option.model.d.ts +0 -0
  193. /package/app/{modules/icons → shared}/models/fontawesome-icons-brands.model.d.ts +0 -0
  194. /package/app/{modules/icons → shared}/models/fontawesome-icons-regular.model.d.ts +0 -0
  195. /package/app/{modules/icons → shared}/models/fontawesome-icons-solid.model.d.ts +0 -0
  196. /package/app/{modules/multi-select → shared}/models/multi-select-option-group.model.d.ts +0 -0
  197. /package/app/{modules/multi-select → shared}/models/multi-select-option.model.d.ts +0 -0
  198. /package/app/{modules/notification → shared}/models/notification.model.d.ts +0 -0
  199. /package/app/{modules/icons → shared}/models/particle-icons-brands.model.d.ts +0 -0
  200. /package/app/{modules/icons → shared}/models/particle-icons-regular.model.d.ts +0 -0
  201. /package/app/{modules/icons → shared}/models/particle-icons-solid.model.d.ts +0 -0
  202. /package/app/{modules/rich-text → shared/models}/rich-text-capabilities.model.d.ts +0 -0
  203. /package/app/{modules/theming → shared}/models/theme.model.d.ts +0 -0
  204. /package/app/{modules/toggle-switch → shared}/models/toggle-options.model.d.ts +0 -0
  205. /package/app/{modules/icons → shared}/services/icons.service.d.ts +0 -0
  206. /package/app/{modules/idle-timeout → shared/services}/idle-timer.d.ts +0 -0
  207. /package/app/{modules/theming → shared}/services/theme-change-detection.service.d.ts +0 -0
@@ -1,250 +0,0 @@
1
- import { Component, forwardRef, Input, ViewChild } from '@angular/core';
2
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
- import { BehaviorSubject, tap } from 'rxjs';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/common";
6
- import * as i2 from "@angular/forms";
7
- import * as i3 from "../../../popover/popover.component";
8
- import * as i4 from "../../date-picker.component";
9
- import * as i5 from "../calendar/calendar.component";
10
- export class DateRangePickerComponent {
11
- changeDetectorRef;
12
- currentYear = new Date().getFullYear();
13
- _disabled = false;
14
- _value$ = new BehaviorSubject(null);
15
- _lastValue = null;
16
- _init = false;
17
- valueObs$ = this._value$.asObservable().pipe(tap(value => {
18
- let newValue = { start: null, end: null };
19
- if (value && value.start && value.end) {
20
- newValue = { start: value.start, end: value.end };
21
- }
22
- if (newValue !== this._lastValue) {
23
- this._lastValue = newValue;
24
- if (this._init) {
25
- this.onChange(this._lastValue);
26
- }
27
- }
28
- }));
29
- inputId = null;
30
- inputClassList = '';
31
- calendarButtonClassList = '';
32
- text = {
33
- begin: 'Begin',
34
- end: 'End',
35
- done: 'Done',
36
- clear: 'Clear',
37
- openCalendar: 'Open Calendar',
38
- selectRange: 'Choose a Range'
39
- };
40
- set dateRange(value) {
41
- this._dateRange = value;
42
- if (this.value && this.value.start) {
43
- this._endDateRange = {
44
- minDate: this.value.start,
45
- maxDate: value.maxDate
46
- };
47
- }
48
- else {
49
- this._endDateRange = value;
50
- }
51
- }
52
- get dateRange() {
53
- return this._dateRange;
54
- }
55
- get endDateRange() {
56
- return this._endDateRange;
57
- }
58
- _dateRange = {
59
- minDate: new Date(this.currentYear - 100, 0, 1),
60
- maxDate: new Date(this.currentYear + 100, 11, 31)
61
- };
62
- _endDateRange = {
63
- minDate: new Date(this.currentYear - 100, 0, 1),
64
- maxDate: new Date(this.currentYear + 100, 11, 31)
65
- };
66
- set value(value) {
67
- if (!value) {
68
- value = { start: null, end: null };
69
- }
70
- this._value$.next(value);
71
- if (value) {
72
- this.beginDate = value.start;
73
- }
74
- }
75
- get value() {
76
- return this._lastValue;
77
- }
78
- set disabled(disabled) {
79
- this._disabled = disabled;
80
- }
81
- get disabled() {
82
- return this._disabled;
83
- }
84
- ariaLabel = null;
85
- /**
86
- * Format for the selected date range in the selection preview. Must
87
- * be a valid Angular DatePipe format
88
- */
89
- dateFormat = 'MM/dd/y';
90
- calendarPopover = null;
91
- beginCalendar = null;
92
- endCalendar = null;
93
- ngAfterViewInit() {
94
- this._init = true;
95
- }
96
- get beginDate() {
97
- if (this._value$.value) {
98
- return this._value$.value.start;
99
- }
100
- return null;
101
- }
102
- set beginDate(beginDate) {
103
- let value = this._value$.value;
104
- value.start = beginDate;
105
- if (!beginDate && this.beginCalendar) {
106
- if (this.beginCalendar) {
107
- this.beginCalendar.clear();
108
- }
109
- }
110
- this._value$.next(value);
111
- if (!beginDate || beginDate > this.endDate) {
112
- this.endDate = null;
113
- }
114
- this._endDateRange = {
115
- minDate: beginDate,
116
- maxDate: this.dateRange.maxDate
117
- };
118
- }
119
- get endDate() {
120
- if (this._value$.value) {
121
- return this._value$.value.end;
122
- }
123
- return null;
124
- }
125
- set endDate(endDate) {
126
- if (this._value$.value && endDate < this._value$.value.start) {
127
- endDate = null;
128
- if (this.endCalendar) {
129
- this.endCalendar.clear();
130
- }
131
- }
132
- let value = this._value$.value;
133
- value.end = endDate;
134
- if (!endDate && this.endCalendar) {
135
- if (this.endCalendar) {
136
- this.endCalendar.clear();
137
- }
138
- }
139
- this._value$.next(value);
140
- }
141
- /**
142
- * Function to call on change
143
- */
144
- onChange = () => { };
145
- /**
146
- * Function to call on touch
147
- */
148
- onTouched = () => { };
149
- constructor(changeDetectorRef) {
150
- this.changeDetectorRef = changeDetectorRef;
151
- }
152
- /**
153
- * Write value
154
- * @param value the value to write
155
- */
156
- writeValue(value) {
157
- this.value = value;
158
- this.changeDetectorRef.markForCheck();
159
- }
160
- /**
161
- * Register function on change
162
- * @param fn the function to change
163
- */
164
- registerOnChange(fn) {
165
- this.onChange = fn;
166
- }
167
- /**
168
- * Register function on touch
169
- * @param fn the function to register
170
- */
171
- registerOnTouched(fn) {
172
- this.onTouched = fn;
173
- }
174
- /**
175
- * Set disabled state
176
- * @param isDisabled whether or not the control is disabled
177
- */
178
- setDisabledState(isDisabled) {
179
- this.disabled = isDisabled;
180
- this.changeDetectorRef.markForCheck();
181
- }
182
- openCalendar(event) {
183
- if (!this.disabled) {
184
- this.calendarPopover.toggle(event);
185
- }
186
- }
187
- updateModel(isBegin, date) {
188
- if (isBegin) {
189
- this.beginDate = date;
190
- }
191
- else {
192
- this.endDate = date;
193
- }
194
- }
195
- checkState() {
196
- const val = this._value$.value;
197
- if (val && ((val.start > val.end) || !(val.start && val.end))) {
198
- this.clear();
199
- }
200
- }
201
- clear() {
202
- this.value = null;
203
- }
204
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: DateRangePickerComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
205
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.1", type: DateRangePickerComponent, selector: "particle-date-range-picker", inputs: { inputId: "inputId", inputClassList: "inputClassList", calendarButtonClassList: "calendarButtonClassList", text: "text", dateRange: "dateRange", value: "value", disabled: "disabled", ariaLabel: "ariaLabel", dateFormat: "dateFormat" }, providers: [
206
- {
207
- provide: NG_VALUE_ACCESSOR,
208
- useExisting: forwardRef(() => DateRangePickerComponent),
209
- multi: true
210
- }
211
- ], viewQueries: [{ propertyName: "calendarPopover", first: true, predicate: ["calendarPopover"], descendants: true }, { propertyName: "beginCalendar", first: true, predicate: ["beginCalendar"], descendants: true }, { propertyName: "endCalendar", first: true, predicate: ["endCalendar"], descendants: true }], ngImport: i0, template: "<div style=\"cursor:default;overflow: hidden;\"\r\n [ngClass]=\"inputClassList ? '' : 'row ptl_input ptl_input_height ptl_input_bg_color ptl_brdr_color ptl_brdr_size ptl_brdr_radius ent_r2l_dir'\"\r\n [style.filter]=\"disabled ? 'brightness(.95)' : ''\">\r\n <button (click)=\"openCalendar($event)\"\r\n type=\"button\"\r\n aria-haspopup=\"dialog\"\r\n [disabled]=\"disabled\"\r\n [attr.aria-label]=\"(ariaLabel ? ariaLabel + ', ' : '') + text.openCalendar\"\r\n [attr.aria-expanded]=\"calendarPopover.visible\"\r\n [ngClass]=\"inputClassList ? inputClassList : 'clear'\"\r\n class=\"access btnset width100 height100 center_center\"\r\n style=\"outline-offset: -2px;\"\r\n >\r\n <div class=\"col size_1 height100 width100 ptl_input_text_size ptl_input_padding v_center\">\r\n <ng-container *ngIf=\"valueObs$ | async as value\">\r\n <ng-container *ngIf=\"value.start && value.end else placeholderTemplate\">\r\n {{value.start | date: dateFormat}} - {{value.end | date: dateFormat}}\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #placeholderTemplate>\r\n <div class=\"ent_r2l_txt\">{{text.selectRange}}...</div>\r\n </ng-template>\r\n </div>\r\n <div class=\"col min_w50 height100 center_center border_left\"\r\n [ngClass]=\"calendarButtonClassList ? calendarButtonClassList : 'bg_overlay ptl_brdr_color ptl_input_text_size'\">\r\n <div class=\"width100 height100 center_center\">\r\n <i class=\"fas fa-calendar-days ptl_input_text_size\"></i>\r\n </div>\r\n </div>\r\n </button>\r\n</div>\r\n\r\n<particle-popover (closed)=\"checkState()\" #calendarPopover>\r\n <div class=\"width100 space_between\">\r\n <div>\r\n <div class=\"pad_10 pad_bot0\">\r\n <div>{{text.begin}}:</div>\r\n <div>\r\n <particle-date-picker\r\n inputClassList=\"access input sm content_color\"\r\n [inputOnly]=\"true\"\r\n [(ngModel)]=\"beginDate\"\r\n [dateRange]=\"dateRange\">\r\n </particle-date-picker>\r\n </div>\r\n </div>\r\n <particle-calendar [value]=\"beginDate\"\r\n [text]=\"$any(text.calendarText)\"\r\n [dateRange]=\"dateRange\"\r\n [showControls]=\"false\"\r\n class=\"hide_element\"\r\n (selected)=\"updateModel(true, $event)\"\r\n #beginCalendar>\r\n </particle-calendar>\r\n </div>\r\n <div>\r\n <div class=\"pad_10 pad_bot0\">\r\n <div>{{text.end}}:</div>\r\n <div>\r\n <particle-date-picker\r\n inputClassList=\"access input sm content_color\"\r\n [inputOnly]=\"true\"\r\n [dateRange]=\"endDateRange\"\r\n [(ngModel)]=\"endDate\">\r\n </particle-date-picker>\r\n </div>\r\n </div>\r\n <particle-calendar [value]=\"endDate\"\r\n [text]=\"$any(text.calendarText)\"\r\n [dateRange]=\"endDateRange\"\r\n [showControls]=\"false\"\r\n class=\"hide_element\"\r\n (selected)=\"updateModel(false, $event)\"\r\n #endCalendar>\r\n </particle-calendar>\r\n <div class=\"mobile_only pad_bot10\"></div>\r\n </div>\r\n </div>\r\n <div class=\"bg_overlay brdr hr mar_5 mar_top0\"></div>\r\n <div class=\"row space_between\">\r\n <button (click)=\"clear()\"\r\n class=\"access btn sm bg_overlay_rev brdr mar_5 hov_bg\"\r\n [attr.aria-label]=\"text.clear\">\r\n <i class=\"fas fa-x mar_right5\"></i><span class=\"text bold\">{{text.clear}}</span>\r\n </button>\r\n\r\n <button (keyup.escape)=\"calendarPopover.close()\"\r\n (click)=\"calendarPopover.close()\"\r\n [attr.data-dialog-close-override]=\"true\"\r\n class=\"access btn sm bg_overlay_rev brdr mar_5 hov_bg\"\r\n [attr.aria-label]=\"text.done\">\r\n <i class=\"fas fa-check mar_right5\"></i><span class=\"text bold\">{{text.done}}</span>\r\n </button>\r\n </div>\r\n</particle-popover>\r\n\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.PopoverComponent, selector: "particle-popover", inputs: ["offset", "width", "height", "classList", "targetOverride", "openDirection", "alignment", "scaleForMobile"], outputs: ["opened", "closed"] }, { kind: "component", type: i4.DatePickerComponent, selector: "particle-date-picker", inputs: ["value", "disabled", "dateRange", "inputId", "ariaLabel", "inputClassList", "calendarButtonClassList", "closeOnSelect", "placeholder", "inputOnly", "text"], outputs: ["input", "dateSelected"] }, { kind: "component", type: i5.CalendarComponent, selector: "particle-calendar", inputs: ["value", "dateRange", "text", "showControls"], outputs: ["selected", "closed"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.DatePipe, name: "date" }] });
212
- }
213
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: DateRangePickerComponent, decorators: [{
214
- type: Component,
215
- args: [{ selector: 'particle-date-range-picker', providers: [
216
- {
217
- provide: NG_VALUE_ACCESSOR,
218
- useExisting: forwardRef(() => DateRangePickerComponent),
219
- multi: true
220
- }
221
- ], template: "<div style=\"cursor:default;overflow: hidden;\"\r\n [ngClass]=\"inputClassList ? '' : 'row ptl_input ptl_input_height ptl_input_bg_color ptl_brdr_color ptl_brdr_size ptl_brdr_radius ent_r2l_dir'\"\r\n [style.filter]=\"disabled ? 'brightness(.95)' : ''\">\r\n <button (click)=\"openCalendar($event)\"\r\n type=\"button\"\r\n aria-haspopup=\"dialog\"\r\n [disabled]=\"disabled\"\r\n [attr.aria-label]=\"(ariaLabel ? ariaLabel + ', ' : '') + text.openCalendar\"\r\n [attr.aria-expanded]=\"calendarPopover.visible\"\r\n [ngClass]=\"inputClassList ? inputClassList : 'clear'\"\r\n class=\"access btnset width100 height100 center_center\"\r\n style=\"outline-offset: -2px;\"\r\n >\r\n <div class=\"col size_1 height100 width100 ptl_input_text_size ptl_input_padding v_center\">\r\n <ng-container *ngIf=\"valueObs$ | async as value\">\r\n <ng-container *ngIf=\"value.start && value.end else placeholderTemplate\">\r\n {{value.start | date: dateFormat}} - {{value.end | date: dateFormat}}\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #placeholderTemplate>\r\n <div class=\"ent_r2l_txt\">{{text.selectRange}}...</div>\r\n </ng-template>\r\n </div>\r\n <div class=\"col min_w50 height100 center_center border_left\"\r\n [ngClass]=\"calendarButtonClassList ? calendarButtonClassList : 'bg_overlay ptl_brdr_color ptl_input_text_size'\">\r\n <div class=\"width100 height100 center_center\">\r\n <i class=\"fas fa-calendar-days ptl_input_text_size\"></i>\r\n </div>\r\n </div>\r\n </button>\r\n</div>\r\n\r\n<particle-popover (closed)=\"checkState()\" #calendarPopover>\r\n <div class=\"width100 space_between\">\r\n <div>\r\n <div class=\"pad_10 pad_bot0\">\r\n <div>{{text.begin}}:</div>\r\n <div>\r\n <particle-date-picker\r\n inputClassList=\"access input sm content_color\"\r\n [inputOnly]=\"true\"\r\n [(ngModel)]=\"beginDate\"\r\n [dateRange]=\"dateRange\">\r\n </particle-date-picker>\r\n </div>\r\n </div>\r\n <particle-calendar [value]=\"beginDate\"\r\n [text]=\"$any(text.calendarText)\"\r\n [dateRange]=\"dateRange\"\r\n [showControls]=\"false\"\r\n class=\"hide_element\"\r\n (selected)=\"updateModel(true, $event)\"\r\n #beginCalendar>\r\n </particle-calendar>\r\n </div>\r\n <div>\r\n <div class=\"pad_10 pad_bot0\">\r\n <div>{{text.end}}:</div>\r\n <div>\r\n <particle-date-picker\r\n inputClassList=\"access input sm content_color\"\r\n [inputOnly]=\"true\"\r\n [dateRange]=\"endDateRange\"\r\n [(ngModel)]=\"endDate\">\r\n </particle-date-picker>\r\n </div>\r\n </div>\r\n <particle-calendar [value]=\"endDate\"\r\n [text]=\"$any(text.calendarText)\"\r\n [dateRange]=\"endDateRange\"\r\n [showControls]=\"false\"\r\n class=\"hide_element\"\r\n (selected)=\"updateModel(false, $event)\"\r\n #endCalendar>\r\n </particle-calendar>\r\n <div class=\"mobile_only pad_bot10\"></div>\r\n </div>\r\n </div>\r\n <div class=\"bg_overlay brdr hr mar_5 mar_top0\"></div>\r\n <div class=\"row space_between\">\r\n <button (click)=\"clear()\"\r\n class=\"access btn sm bg_overlay_rev brdr mar_5 hov_bg\"\r\n [attr.aria-label]=\"text.clear\">\r\n <i class=\"fas fa-x mar_right5\"></i><span class=\"text bold\">{{text.clear}}</span>\r\n </button>\r\n\r\n <button (keyup.escape)=\"calendarPopover.close()\"\r\n (click)=\"calendarPopover.close()\"\r\n [attr.data-dialog-close-override]=\"true\"\r\n class=\"access btn sm bg_overlay_rev brdr mar_5 hov_bg\"\r\n [attr.aria-label]=\"text.done\">\r\n <i class=\"fas fa-check mar_right5\"></i><span class=\"text bold\">{{text.done}}</span>\r\n </button>\r\n </div>\r\n</particle-popover>\r\n\r\n" }]
222
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { inputId: [{
223
- type: Input
224
- }], inputClassList: [{
225
- type: Input
226
- }], calendarButtonClassList: [{
227
- type: Input
228
- }], text: [{
229
- type: Input
230
- }], dateRange: [{
231
- type: Input
232
- }], value: [{
233
- type: Input
234
- }], disabled: [{
235
- type: Input
236
- }], ariaLabel: [{
237
- type: Input
238
- }], dateFormat: [{
239
- type: Input
240
- }], calendarPopover: [{
241
- type: ViewChild,
242
- args: ['calendarPopover']
243
- }], beginCalendar: [{
244
- type: ViewChild,
245
- args: ['beginCalendar']
246
- }], endCalendar: [{
247
- type: ViewChild,
248
- args: ['endCalendar']
249
- }] } });
250
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2RhdGUtcGlja2VyL2NvbXBvbmVudHMvZGF0ZS1yYW5nZS1waWNrZXIvZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2RhdGUtcGlja2VyL2NvbXBvbmVudHMvZGF0ZS1yYW5nZS1waWNrZXIvZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFtQyxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEcsT0FBTyxFQUF1QixpQkFBaUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZFLE9BQU8sRUFBQyxlQUFlLEVBQUUsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDOzs7Ozs7O0FBaUIxQyxNQUFNLE9BQU8sd0JBQXdCO0lBbU1mO0lBak1wQixXQUFXLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN2QyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBRVYsT0FBTyxHQUFHLElBQUksZUFBZSxDQUFNLElBQUksQ0FBQyxDQUFDO0lBRXpDLFVBQVUsR0FBUSxJQUFXLENBQUM7SUFDOUIsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUV0QixTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUM5QyxLQUFLLENBQUMsRUFBRTtRQUNOLElBQUksUUFBUSxHQUFHLEVBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFDLENBQUM7UUFDeEMsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLEtBQUss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QUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBVyxDQUFDO0lBQzNCLENBQUM7dUdBaFFVLHdCQUF3QjsyRkFBeEIsd0JBQXdCLHlTQVJ4QjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsd0JBQXdCLENBQUM7Z0JBQ3ZELEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRiw0VUNqQkgsMHRJQWdHQTs7MkZEN0VhLHdCQUF3QjtrQkFacEMsU0FBUzsrQkFDRSw0QkFBNEIsYUFHM0I7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUseUJBQXlCLENBQUM7NEJBQ3ZELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO3NGQThCRCxPQUFPO3NCQUROLEtBQUs7Z0JBSU4sY0FBYztzQkFEYixLQUFLO2dCQUlOLHVCQUF1QjtzQkFEdEIsS0FBSztnQkFJTixJQUFJO3NCQURILEtBQUs7Z0JBV0YsU0FBUztzQkFEWixLQUFLO2dCQWlDRixLQUFLO3NCQURSLEtBQUs7Z0JBa0JGLFFBQVE7c0JBRFgsS0FBSztnQkFVTixTQUFTO3NCQURSLEtBQUs7Z0JBUU4sVUFBVTtzQkFEVCxLQUFLO2dCQUlOLGVBQWU7c0JBRGQsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBSTVCLGFBQWE7c0JBRFosU0FBUzt1QkFBQyxlQUFlO2dCQUkxQixXQUFXO3NCQURWLFNBQVM7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgZm9yd2FyZFJlZiwgSW5wdXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7Q29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCB0YXB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge0RhdGVSYW5nZVBpY2tlclRleHR9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9tb2RlbHMvcGFydGljbGUtY29tcG9uZW50LXRleHQubW9kZWwnO1xyXG5pbXBvcnQge1BvcG92ZXJDb21wb25lbnR9IGZyb20gJy4uLy4uLy4uL3BvcG92ZXIvcG9wb3Zlci5jb21wb25lbnQnO1xyXG5pbXBvcnQge0NhbGVuZGFyQ29tcG9uZW50fSBmcm9tICcuLi9jYWxlbmRhci9jYWxlbmRhci5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdwYXJ0aWNsZS1kYXRlLXJhbmdlLXBpY2tlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtcmFuZ2UtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kYXRlLXJhbmdlLXBpY2tlci5jb21wb25lbnQuY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEYXRlUmFuZ2VQaWNrZXJDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgfVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIERhdGVSYW5nZVBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlclZpZXdJbml0IHtcclxuXHJcbiAgY3VycmVudFllYXIgPSBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCk7XHJcbiAgX2Rpc2FibGVkID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgX3ZhbHVlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcclxuXHJcbiAgcHJpdmF0ZSBfbGFzdFZhbHVlOiBhbnkgPSBudWxsIGFzIGFueTtcclxuICBwcml2YXRlIF9pbml0ID0gZmFsc2U7XHJcblxyXG4gIHZhbHVlT2JzJCA9IHRoaXMuX3ZhbHVlJC5hc09ic2VydmFibGUoKS5waXBlKHRhcChcclxuICAgIHZhbHVlID0+IHtcclxuICAgICAgbGV0IG5ld1ZhbHVlID0ge3N0YXJ0OiBudWxsLCBlbmQ6IG51bGx9O1xyXG4gICAgICBpZiAodmFsdWUgJiYgdmFsdWUuc3RhcnQgJiYgdmFsdWUuZW5kKSB7XHJcbiAgICAgICAgbmV3VmFsdWUgPSB7c3RhcnQ6IHZhbHVlLnN0YXJ0LCBlbmQ6IHZhbHVlLmVuZH07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChuZXdWYWx1ZSAhPT0gdGhpcy5fbGFzdFZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5fbGFzdFZhbHVlID0gbmV3VmFsdWU7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9pbml0KSB7XHJcbiAgICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuX2xhc3RWYWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgKSk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgaW5wdXRJZDogc3RyaW5nID0gbnVsbCBhcyBhbnk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgaW5wdXRDbGFzc0xpc3QgPSAnJztcclxuXHJcbiAgQElucHV0KClcclxuICBjYWxlbmRhckJ1dHRvbkNsYXNzTGlzdCA9ICcnO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHRleHQ6IERhdGVSYW5nZVBpY2tlclRleHQgPSB7XHJcbiAgICBiZWdpbjogJ0JlZ2luJyxcclxuICAgIGVuZDogJ0VuZCcsXHJcbiAgICBkb25lOiAnRG9uZScsXHJcbiAgICBjbGVhcjogJ0NsZWFyJyxcclxuICAgIG9wZW5DYWxlbmRhcjogJ09wZW4gQ2FsZW5kYXInLFxyXG4gICAgc2VsZWN0UmFuZ2U6ICdDaG9vc2UgYSBSYW5nZSdcclxuICB9IGFzIERhdGVSYW5nZVBpY2tlclRleHQ7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGRhdGVSYW5nZSh2YWx1ZToge21pbkRhdGU6IERhdGUsICBtYXhEYXRlOiBEYXRlfSkge1xyXG4gICAgdGhpcy5fZGF0ZVJhbmdlID0gdmFsdWU7XHJcblxyXG4gICAgaWYgKHRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZS5zdGFydCkge1xyXG4gICAgICB0aGlzLl9lbmREYXRlUmFuZ2UgPSB7XHJcbiAgICAgICAgbWluRGF0ZTogdGhpcy52YWx1ZS5zdGFydCxcclxuICAgICAgICBtYXhEYXRlOiB2YWx1ZS5tYXhEYXRlXHJcbiAgICAgIH07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9lbmREYXRlUmFuZ2UgPSB2YWx1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBkYXRlUmFuZ2UoKToge21pbkRhdGU6IERhdGUsICBtYXhEYXRlOiBEYXRlfSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGF0ZVJhbmdlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGVuZERhdGVSYW5nZSgpOiB7bWluRGF0ZTogRGF0ZSwgIG1heERhdGU6IERhdGV9IHtcclxuICAgIHJldHVybiB0aGlzLl9lbmREYXRlUmFuZ2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9kYXRlUmFuZ2UgPSB7XHJcbiAgICBtaW5EYXRlOiBuZXcgRGF0ZSh0aGlzLmN1cnJlbnRZZWFyIC0gMTAwLCAwLCAxKSxcclxuICAgIG1heERhdGU6IG5ldyBEYXRlKHRoaXMuY3VycmVudFllYXIgKyAxMDAsIDExLCAzMSlcclxuICB9O1xyXG5cclxuICBwcml2YXRlIF9lbmREYXRlUmFuZ2UgPSB7XHJcbiAgICBtaW5EYXRlOiBuZXcgRGF0ZSh0aGlzLmN1cnJlbnRZZWFyIC0gMTAwLCAwLCAxKSxcclxuICAgIG1heERhdGU6IG5ldyBEYXRlKHRoaXMuY3VycmVudFllYXIgKyAxMDAsIDExLCAzMSlcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHZhbHVlKHZhbHVlOiB7IHN0YXJ0OiBEYXRlLCBlbmQ6IERhdGUgfSkge1xyXG4gICAgaWYgKCF2YWx1ZSkge1xyXG4gICAgICB2YWx1ZSA9IHtzdGFydDogbnVsbCBhcyBhbnksIGVuZDogbnVsbCBhcyBhbnl9O1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX3ZhbHVlJC5uZXh0KHZhbHVlKTtcclxuXHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgdGhpcy5iZWdpbkRhdGUgPSB2YWx1ZS5zdGFydDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCB2YWx1ZSgpOiB7c3RhcnQ6IERhdGUsIGVuZDogRGF0ZX0ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2xhc3RWYWx1ZTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGRpc2FibGVkKGRpc2FibGVkOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9kaXNhYmxlZCA9IGRpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBhcmlhTGFiZWw6IHN0cmluZyA9IG51bGwgYXMgYW55O1xyXG5cclxuICAvKipcclxuICAgKiBGb3JtYXQgZm9yIHRoZSBzZWxlY3RlZCBkYXRlIHJhbmdlIGluIHRoZSBzZWxlY3Rpb24gcHJldmlldy4gTXVzdFxyXG4gICAqIGJlIGEgdmFsaWQgQW5ndWxhciBEYXRlUGlwZSBmb3JtYXRcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIGRhdGVGb3JtYXQgPSAnTU0vZGQveSc7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2NhbGVuZGFyUG9wb3ZlcicpXHJcbiAgY2FsZW5kYXJQb3BvdmVyOiBQb3BvdmVyQ29tcG9uZW50ID0gbnVsbCBhcyBhbnk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2JlZ2luQ2FsZW5kYXInKVxyXG4gIGJlZ2luQ2FsZW5kYXI6IENhbGVuZGFyQ29tcG9uZW50ID0gbnVsbCBhcyBhbnk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2VuZENhbGVuZGFyJylcclxuICBlbmRDYWxlbmRhcjogQ2FsZW5kYXJDb21wb25lbnQgPSBudWxsIGFzIGFueTtcclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5faW5pdCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBnZXQgYmVnaW5EYXRlKCk6IERhdGUge1xyXG4gICAgaWYgKHRoaXMuX3ZhbHVlJC52YWx1ZSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5fdmFsdWUkLnZhbHVlLnN0YXJ0O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBudWxsIGFzIGFueTtcclxuICB9XHJcblxyXG4gIHNldCBiZWdpbkRhdGUoYmVnaW5EYXRlOiBEYXRlKSB7XHJcbiAgICBsZXQgdmFsdWUgPSB0aGlzLl92YWx1ZSQudmFsdWU7XHJcbiAgICB2YWx1ZS5zdGFydCA9IGJlZ2luRGF0ZTtcclxuXHJcbiAgICBpZiAoIWJlZ2luRGF0ZSAmJiB0aGlzLmJlZ2luQ2FsZW5kYXIpIHtcclxuICAgICAgaWYgKHRoaXMuYmVnaW5DYWxlbmRhcikge1xyXG4gICAgICAgIHRoaXMuYmVnaW5DYWxlbmRhci5jbGVhcigpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fdmFsdWUkLm5leHQodmFsdWUpO1xyXG5cclxuICAgIGlmICghYmVnaW5EYXRlIHx8IGJlZ2luRGF0ZSA+IHRoaXMuZW5kRGF0ZSkge1xyXG4gICAgICB0aGlzLmVuZERhdGUgPSBudWxsIGFzIGFueTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9lbmREYXRlUmFuZ2UgPSB7XHJcbiAgICAgIG1pbkRhdGU6IGJlZ2luRGF0ZSxcclxuICAgICAgbWF4RGF0ZTogdGhpcy5kYXRlUmFuZ2UubWF4RGF0ZVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGdldCBlbmREYXRlKCk6IERhdGUge1xyXG4gICAgaWYgKHRoaXMuX3ZhbHVlJC52YWx1ZSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5fdmFsdWUkLnZhbHVlLmVuZDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbnVsbCBhcyBhbnk7XHJcbiAgfVxyXG5cclxuICBzZXQgZW5kRGF0ZShlbmREYXRlOiBEYXRlKSB7XHJcbiAgICBpZiAodGhpcy5fdmFsdWUkLnZhbHVlICYmIGVuZERhdGUgPCB0aGlzLl92YWx1ZSQudmFsdWUuc3RhcnQpIHtcclxuICAgICAgZW5kRGF0ZSA9IG51bGwgYXMgYW55O1xyXG4gICAgICBpZiAodGhpcy5lbmRDYWxlbmRhcikge1xyXG4gICAgICAgIHRoaXMuZW5kQ2FsZW5kYXIuY2xlYXIoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGxldCB2YWx1ZSA9IHRoaXMuX3ZhbHVlJC52YWx1ZTtcclxuICAgIHZhbHVlLmVuZCA9IGVuZERhdGU7XHJcblxyXG4gICAgaWYgKCFlbmREYXRlICYmIHRoaXMuZW5kQ2FsZW5kYXIpIHtcclxuICAgICAgaWYgKHRoaXMuZW5kQ2FsZW5kYXIpIHtcclxuICAgICAgICB0aGlzLmVuZENhbGVuZGFyLmNsZWFyKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl92YWx1ZSQubmV4dCh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGdW5jdGlvbiB0byBjYWxsIG9uIGNoYW5nZVxyXG4gICAqL1xyXG4gIG9uQ2hhbmdlOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9ICgpID0+IHt9O1xyXG5cclxuICAvKipcclxuICAgKiBGdW5jdGlvbiB0byBjYWxsIG9uIHRvdWNoXHJcbiAgICovXHJcbiAgb25Ub3VjaGVkOiAoKSA9PiBhbnkgPSAoKSA9PiB7fTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBXcml0ZSB2YWx1ZVxyXG4gICAqIEBwYXJhbSB2YWx1ZSB0aGUgdmFsdWUgdG8gd3JpdGVcclxuICAgKi9cclxuICB3cml0ZVZhbHVlKHZhbHVlOiB7IHN0YXJ0OiBEYXRlLCBlbmQ6IERhdGUgfSk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlZ2lzdGVyIGZ1bmN0aW9uIG9uIGNoYW5nZVxyXG4gICAqIEBwYXJhbSBmbiB0aGUgZnVuY3Rpb24gdG8gY2hhbmdlXHJcbiAgICovXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZWdpc3RlciBmdW5jdGlvbiBvbiB0b3VjaFxyXG4gICAqIEBwYXJhbSBmbiB0aGUgZnVuY3Rpb24gdG8gcmVnaXN0ZXJcclxuICAgKi9cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IGRpc2FibGVkIHN0YXRlXHJcbiAgICogQHBhcmFtIGlzRGlzYWJsZWQgd2hldGhlciBvciBub3QgdGhlIGNvbnRyb2wgaXMgZGlzYWJsZWRcclxuICAgKi9cclxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIG9wZW5DYWxlbmRhcihldmVudDogRXZlbnQpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLmNhbGVuZGFyUG9wb3Zlci50b2dnbGUoZXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlTW9kZWwoaXNCZWdpbjogYm9vbGVhbiwgZGF0ZTogRGF0ZSk6IHZvaWQge1xyXG4gICAgaWYgKGlzQmVnaW4pIHtcclxuICAgICAgdGhpcy5iZWdpbkRhdGUgPSBkYXRlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5lbmREYXRlID0gZGF0ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoZWNrU3RhdGUoKTogdm9pZCB7XHJcbiAgICBjb25zdCB2YWwgPSB0aGlzLl92YWx1ZSQudmFsdWU7XHJcbiAgICBpZiAodmFsICYmICgodmFsLnN0YXJ0ID4gdmFsLmVuZCkgfHwgISh2YWwuc3RhcnQgJiYgdmFsLmVuZCkpKSB7XHJcbiAgICAgIHRoaXMuY2xlYXIoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsZWFyKCk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZSA9IG51bGwgYXMgYW55O1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiBzdHlsZT1cImN1cnNvcjpkZWZhdWx0O292ZXJmbG93OiBoaWRkZW47XCJcclxuICAgICBbbmdDbGFzc109XCJpbnB1dENsYXNzTGlzdCA/ICcnIDogJ3JvdyBwdGxfaW5wdXQgcHRsX2lucHV0X2hlaWdodCBwdGxfaW5wdXRfYmdfY29sb3IgcHRsX2JyZHJfY29sb3IgcHRsX2JyZHJfc2l6ZSBwdGxfYnJkcl9yYWRpdXMgZW50X3IybF9kaXInXCJcclxuICAgICBbc3R5bGUuZmlsdGVyXT1cImRpc2FibGVkID8gJ2JyaWdodG5lc3MoLjk1KScgOiAnJ1wiPlxyXG4gIDxidXR0b24gKGNsaWNrKT1cIm9wZW5DYWxlbmRhcigkZXZlbnQpXCJcclxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgYXJpYS1oYXNwb3B1cD1cImRpYWxvZ1wiXHJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCIoYXJpYUxhYmVsID8gYXJpYUxhYmVsICsgJywgJyA6ICcnKSArIHRleHQub3BlbkNhbGVuZGFyXCJcclxuICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiY2FsZW5kYXJQb3BvdmVyLnZpc2libGVcIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwiaW5wdXRDbGFzc0xpc3QgPyBpbnB1dENsYXNzTGlzdCA6ICdjbGVhcidcIlxyXG4gICAgICAgICAgY2xhc3M9XCJhY2Nlc3MgYnRuc2V0IHdpZHRoMTAwIGhlaWdodDEwMCBjZW50ZXJfY2VudGVyXCJcclxuICAgICAgICAgIHN0eWxlPVwib3V0bGluZS1vZmZzZXQ6IC0ycHg7XCJcclxuICA+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sIHNpemVfMSBoZWlnaHQxMDAgd2lkdGgxMDAgcHRsX2lucHV0X3RleHRfc2l6ZSBwdGxfaW5wdXRfcGFkZGluZyB2X2NlbnRlclwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidmFsdWVPYnMkIHwgYXN5bmMgYXMgdmFsdWVcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidmFsdWUuc3RhcnQgJiYgdmFsdWUuZW5kIGVsc2UgcGxhY2Vob2xkZXJUZW1wbGF0ZVwiPlxyXG4gICAgICAgICAge3t2YWx1ZS5zdGFydCB8IGRhdGU6IGRhdGVGb3JtYXR9fSAtIHt7dmFsdWUuZW5kIHwgZGF0ZTogZGF0ZUZvcm1hdH19XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctdGVtcGxhdGUgI3BsYWNlaG9sZGVyVGVtcGxhdGU+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImVudF9yMmxfdHh0XCI+e3t0ZXh0LnNlbGVjdFJhbmdlfX0uLi48L2Rpdj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbCBtaW5fdzUwIGhlaWdodDEwMCBjZW50ZXJfY2VudGVyIGJvcmRlcl9sZWZ0XCJcclxuICAgICAgICAgW25nQ2xhc3NdPVwiY2FsZW5kYXJCdXR0b25DbGFzc0xpc3QgPyBjYWxlbmRhckJ1dHRvbkNsYXNzTGlzdCA6ICdiZ19vdmVybGF5IHB0bF9icmRyX2NvbG9yIHB0bF9pbnB1dF90ZXh0X3NpemUnXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ3aWR0aDEwMCBoZWlnaHQxMDAgY2VudGVyX2NlbnRlclwiPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNhbGVuZGFyLWRheXMgcHRsX2lucHV0X3RleHRfc2l6ZVwiPjwvaT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2J1dHRvbj5cclxuPC9kaXY+XHJcblxyXG48cGFydGljbGUtcG9wb3ZlciAoY2xvc2VkKT1cImNoZWNrU3RhdGUoKVwiICNjYWxlbmRhclBvcG92ZXI+XHJcbiAgPGRpdiBjbGFzcz1cIndpZHRoMTAwIHNwYWNlX2JldHdlZW5cIj5cclxuICAgIDxkaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJwYWRfMTAgcGFkX2JvdDBcIj5cclxuICAgICAgICA8ZGl2Pnt7dGV4dC5iZWdpbn19OjwvZGl2PlxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICA8cGFydGljbGUtZGF0ZS1waWNrZXJcclxuICAgICAgICAgICAgaW5wdXRDbGFzc0xpc3Q9XCJhY2Nlc3MgaW5wdXQgc20gY29udGVudF9jb2xvclwiXHJcbiAgICAgICAgICAgIFtpbnB1dE9ubHldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiYmVnaW5EYXRlXCJcclxuICAgICAgICAgICAgW2RhdGVSYW5nZV09XCJkYXRlUmFuZ2VcIj5cclxuICAgICAgICAgIDwvcGFydGljbGUtZGF0ZS1waWNrZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8cGFydGljbGUtY2FsZW5kYXIgW3ZhbHVlXT1cImJlZ2luRGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbdGV4dF09XCIkYW55KHRleHQuY2FsZW5kYXJUZXh0KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbZGF0ZVJhbmdlXT1cImRhdGVSYW5nZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0NvbnRyb2xzXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaGlkZV9lbGVtZW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3RlZCk9XCJ1cGRhdGVNb2RlbCh0cnVlLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICNiZWdpbkNhbGVuZGFyPlxyXG4gICAgICA8L3BhcnRpY2xlLWNhbGVuZGFyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicGFkXzEwIHBhZF9ib3QwXCI+XHJcbiAgICAgICAgPGRpdj57e3RleHQuZW5kfX06PC9kaXY+XHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgIDxwYXJ0aWNsZS1kYXRlLXBpY2tlclxyXG4gICAgICAgICAgICBpbnB1dENsYXNzTGlzdD1cImFjY2VzcyBpbnB1dCBzbSBjb250ZW50X2NvbG9yXCJcclxuICAgICAgICAgICAgW2lucHV0T25seV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgW2RhdGVSYW5nZV09XCJlbmREYXRlUmFuZ2VcIlxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImVuZERhdGVcIj5cclxuICAgICAgICAgIDwvcGFydGljbGUtZGF0ZS1waWNrZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8cGFydGljbGUtY2FsZW5kYXIgW3ZhbHVlXT1cImVuZERhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3RleHRdPVwiJGFueSh0ZXh0LmNhbGVuZGFyVGV4dClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2RhdGVSYW5nZV09XCJlbmREYXRlUmFuZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dDb250cm9sc109XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImhpZGVfZWxlbWVudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWQpPVwidXBkYXRlTW9kZWwoZmFsc2UsICRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgI2VuZENhbGVuZGFyPlxyXG4gICAgICA8L3BhcnRpY2xlLWNhbGVuZGFyPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9iaWxlX29ubHkgcGFkX2JvdDEwXCI+PC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwiYmdfb3ZlcmxheSBicmRyIGhyIG1hcl81IG1hcl90b3AwXCI+PC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cInJvdyBzcGFjZV9iZXR3ZWVuXCI+XHJcbiAgICA8YnV0dG9uIChjbGljayk9XCJjbGVhcigpXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJhY2Nlc3MgYnRuIHNtIGJnX292ZXJsYXlfcmV2IGJyZHIgbWFyXzUgaG92X2JnXCJcclxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0ZXh0LmNsZWFyXCI+XHJcbiAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXggbWFyX3JpZ2h0NVwiPjwvaT48c3BhbiBjbGFzcz1cInRleHQgYm9sZFwiPnt7dGV4dC5jbGVhcn19PC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcblxyXG4gICAgPGJ1dHRvbiAoa2V5dXAuZXNjYXBlKT1cImNhbGVuZGFyUG9wb3Zlci5jbG9zZSgpXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImNhbGVuZGFyUG9wb3Zlci5jbG9zZSgpXCJcclxuICAgICAgICAgICAgW2F0dHIuZGF0YS1kaWFsb2ctY2xvc2Utb3ZlcnJpZGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYWNjZXNzIGJ0biBzbSBiZ19vdmVybGF5X3JldiBicmRyIG1hcl81IGhvdl9iZ1wiXHJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidGV4dC5kb25lXCI+XHJcbiAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNoZWNrIG1hcl9yaWdodDVcIj48L2k+PHNwYW4gY2xhc3M9XCJ0ZXh0IGJvbGRcIj57e3RleHQuZG9uZX19PC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbjwvcGFydGljbGUtcG9wb3Zlcj5cclxuXHJcbiJdfQ==