@anglr/datetime 1.0.0 → 2.0.1-beta.20220222061608

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 (456) hide show
  1. package/changelog.md +19 -0
  2. package/date-fns/package.json +7 -7
  3. package/date-fns/src/{date-fns.d.ts → index.d.ts} +4 -4
  4. package/date-fns/src/index.d.ts.map +1 -0
  5. package/date-fns/src/misc/tokens.d.ts +10 -10
  6. package/date-fns/src/services/dateFnsDateApi.service.d.ts +36 -33
  7. package/date-fns/src/services/dateFnsDateApi.service.d.ts.map +1 -1
  8. package/date-fns/src/services/dateFnsLocale.service.d.ts +10 -10
  9. package/es2015/date-fns/src/index.js +4 -0
  10. package/es2015/date-fns/src/index.js.map +1 -0
  11. package/es2015/date-fns/src/misc/tokens.js +20 -0
  12. package/es2015/date-fns/src/misc/tokens.js.map +1 -0
  13. package/es2015/date-fns/src/services/dateFnsDateApi.service.js +438 -0
  14. package/es2015/date-fns/src/services/dateFnsDateApi.service.js.map +1 -0
  15. package/es2015/date-fns/src/services/dateFnsLocale.service.js +2 -0
  16. package/es2015/date-fns/src/services/dateFnsLocale.service.js.map +1 -0
  17. package/es2015/karma.conf.js +57 -0
  18. package/es2015/karma.conf.js.map +1 -0
  19. package/{moment/src/moment.d.ts → es2015/moment/src/index.js} +3 -3
  20. package/es2015/moment/src/index.js.map +1 -0
  21. package/es2015/moment/src/misc/tokens.js +15 -0
  22. package/es2015/moment/src/misc/tokens.js.map +1 -0
  23. package/es2015/moment/src/services/momentDateApi.service.js +398 -0
  24. package/es2015/moment/src/services/momentDateApi.service.js.map +1 -0
  25. package/{src/datetime.d.ts → es2015/src/index.js} +19 -19
  26. package/es2015/src/index.js.map +1 -0
  27. package/es2015/src/misc/constants.js +33 -0
  28. package/es2015/src/misc/constants.js.map +1 -0
  29. package/es2015/src/misc/datetime.interface.js +2 -0
  30. package/es2015/src/misc/datetime.interface.js.map +1 -0
  31. package/es2015/src/misc/tokens.js +19 -0
  32. package/es2015/src/misc/tokens.js.map +1 -0
  33. package/es2015/src/misc/validators.js +58 -0
  34. package/es2015/src/misc/validators.js.map +1 -0
  35. package/es2015/src/modules/datePipes.module.js +33 -0
  36. package/es2015/src/modules/datePipes.module.js.map +1 -0
  37. package/es2015/src/picker/components/dayPicker/dayPicker.component.js +172 -0
  38. package/es2015/src/picker/components/dayPicker/dayPicker.component.js.map +1 -0
  39. package/es2015/src/picker/components/dayPicker/dayPicker.interfaces.js +2 -0
  40. package/es2015/src/picker/components/dayPicker/dayPicker.interfaces.js.map +1 -0
  41. package/es2015/src/picker/components/monthPicker/monthPicker.component.js +114 -0
  42. package/es2015/src/picker/components/monthPicker/monthPicker.component.js.map +1 -0
  43. package/es2015/src/picker/components/monthPicker/monthPicker.interfaces.js +2 -0
  44. package/es2015/src/picker/components/monthPicker/monthPicker.interfaces.js.map +1 -0
  45. package/es2015/src/picker/components/picker/picker.component.animations.js +71 -0
  46. package/es2015/src/picker/components/picker/picker.component.animations.js.map +1 -0
  47. package/es2015/src/picker/components/picker/picker.component.js +241 -0
  48. package/es2015/src/picker/components/picker/picker.component.js.map +1 -0
  49. package/es2015/src/picker/components/pickerBase.component.js +243 -0
  50. package/es2015/src/picker/components/pickerBase.component.js.map +1 -0
  51. package/es2015/src/picker/components/yearPicker/yearPicker.component.js +126 -0
  52. package/es2015/src/picker/components/yearPicker/yearPicker.component.js.map +1 -0
  53. package/es2015/src/picker/components/yearPicker/yearPicker.interfaces.js +2 -0
  54. package/es2015/src/picker/components/yearPicker/yearPicker.interfaces.js.map +1 -0
  55. package/es2015/src/picker/interfaces.js +5 -0
  56. package/es2015/src/picker/interfaces.js.map +1 -0
  57. package/es2015/src/picker/misc/datetimePicker.interface.js +2 -0
  58. package/es2015/src/picker/misc/datetimePicker.interface.js.map +1 -0
  59. package/es2015/src/picker/misc/tokens.js +6 -0
  60. package/es2015/src/picker/misc/tokens.js.map +1 -0
  61. package/es2015/src/picker/modules/picker.module.js +46 -0
  62. package/es2015/src/picker/modules/picker.module.js.map +1 -0
  63. package/es2015/src/picker/types.js +8 -0
  64. package/es2015/src/picker/types.js.map +1 -0
  65. package/es2015/src/pipes/asRequiredType.js +22 -0
  66. package/es2015/src/pipes/asRequiredType.js.map +1 -0
  67. package/es2015/src/pipes/dateConvert.pipe.js +35 -0
  68. package/es2015/src/pipes/dateConvert.pipe.js.map +1 -0
  69. package/es2015/src/pipes/dateFormat.pipe.js +45 -0
  70. package/es2015/src/pipes/dateFormat.pipe.js.map +1 -0
  71. package/es2015/src/selector/components/inputDateTime/inputDateTime.component.js +421 -0
  72. package/es2015/src/selector/components/inputDateTime/inputDateTime.component.js.map +1 -0
  73. package/es2015/src/selector/components/selector/selector.component.animations.js +15 -0
  74. package/es2015/src/selector/components/selector/selector.component.animations.js.map +1 -0
  75. package/es2015/src/selector/components/selector/selector.component.js +344 -0
  76. package/es2015/src/selector/components/selector/selector.component.js.map +1 -0
  77. package/es2015/src/selector/components/simpleInputDateTime/simpleInputDateTime.component.js +317 -0
  78. package/es2015/src/selector/components/simpleInputDateTime/simpleInputDateTime.component.js.map +1 -0
  79. package/es2015/src/selector/directives/datetimeMaxValidator/datetimeMaxValidator.directive.js +51 -0
  80. package/es2015/src/selector/directives/datetimeMaxValidator/datetimeMaxValidator.directive.js.map +1 -0
  81. package/es2015/src/selector/directives/datetimeMinValidator/datetimeMinValidator.directive.js +51 -0
  82. package/es2015/src/selector/directives/datetimeMinValidator/datetimeMinValidator.directive.js.map +1 -0
  83. package/es2015/src/selector/directives/datetimeValidator/datetimeValidator.directive.js +47 -0
  84. package/es2015/src/selector/directives/datetimeValidator/datetimeValidator.directive.js.map +1 -0
  85. package/es2015/src/selector/directives/selectorControlValueAccessor/selectorControlValueAccessor.directive.js +119 -0
  86. package/es2015/src/selector/directives/selectorControlValueAccessor/selectorControlValueAccessor.directive.js.map +1 -0
  87. package/es2015/src/selector/interfaces.js +2 -0
  88. package/es2015/src/selector/interfaces.js.map +1 -0
  89. package/es2015/src/selector/misc/datetimeSelector.interface.js +2 -0
  90. package/es2015/src/selector/misc/datetimeSelector.interface.js.map +1 -0
  91. package/es2015/src/selector/misc/tokens.js +6 -0
  92. package/es2015/src/selector/misc/tokens.js.map +1 -0
  93. package/es2015/src/selector/modules/basicSelector.module.js +20 -0
  94. package/es2015/src/selector/modules/basicSelector.module.js.map +1 -0
  95. package/es2015/src/selector/modules/selector.module.js +60 -0
  96. package/es2015/src/selector/modules/selector.module.js.map +1 -0
  97. package/es2015/src/selector/types.js +10 -0
  98. package/es2015/src/selector/types.js.map +1 -0
  99. package/es2015/src/services/dateApi.interface.js +2 -0
  100. package/es2015/src/services/dateApi.interface.js.map +1 -0
  101. package/es2015/src/services/datePositionParser.interface.js +2 -0
  102. package/es2015/src/services/datePositionParser.interface.js.map +1 -0
  103. package/es2015/src/services/datePositionParser.service.js +227 -0
  104. package/es2015/src/services/datePositionParser.service.js.map +1 -0
  105. package/es2015/src/services/dateTimeRelativeParser.service.js +66 -0
  106. package/es2015/src/services/dateTimeRelativeParser.service.js.map +1 -0
  107. package/es2015/src/services/dateValueProvider.service.js +58 -0
  108. package/es2015/src/services/dateValueProvider.service.js.map +1 -0
  109. package/es2015/src/services/formatProvider.interface.js +2 -0
  110. package/es2015/src/services/formatProvider.interface.js.map +1 -0
  111. package/es2015/src/services/index.js +4 -0
  112. package/es2015/src/services/index.js.map +1 -0
  113. package/es2020/date-fns/src/index.js +4 -0
  114. package/es2020/date-fns/src/index.js.map +1 -0
  115. package/es2020/date-fns/src/misc/tokens.js +20 -0
  116. package/es2020/date-fns/src/misc/tokens.js.map +1 -0
  117. package/es2020/date-fns/src/services/dateFnsDateApi.service.js +437 -0
  118. package/es2020/date-fns/src/services/dateFnsDateApi.service.js.map +1 -0
  119. package/es2020/date-fns/src/services/dateFnsLocale.service.js +2 -0
  120. package/es2020/date-fns/src/services/dateFnsLocale.service.js.map +1 -0
  121. package/es2020/karma.conf.js +57 -0
  122. package/es2020/karma.conf.js.map +1 -0
  123. package/es2020/moment/src/index.js +3 -0
  124. package/es2020/moment/src/index.js.map +1 -0
  125. package/es2020/moment/src/misc/tokens.js +15 -0
  126. package/es2020/moment/src/misc/tokens.js.map +1 -0
  127. package/es2020/moment/src/services/momentDateApi.service.js +398 -0
  128. package/es2020/moment/src/services/momentDateApi.service.js.map +1 -0
  129. package/es2020/src/index.js +19 -0
  130. package/es2020/src/index.js.map +1 -0
  131. package/es2020/src/misc/constants.js +33 -0
  132. package/es2020/src/misc/constants.js.map +1 -0
  133. package/es2020/src/misc/datetime.interface.js +2 -0
  134. package/es2020/src/misc/datetime.interface.js.map +1 -0
  135. package/es2020/src/misc/tokens.js +19 -0
  136. package/es2020/src/misc/tokens.js.map +1 -0
  137. package/es2020/src/misc/validators.js +58 -0
  138. package/es2020/src/misc/validators.js.map +1 -0
  139. package/es2020/src/modules/datePipes.module.js +33 -0
  140. package/es2020/src/modules/datePipes.module.js.map +1 -0
  141. package/es2020/src/picker/components/dayPicker/dayPicker.component.js +172 -0
  142. package/es2020/src/picker/components/dayPicker/dayPicker.component.js.map +1 -0
  143. package/es2020/src/picker/components/dayPicker/dayPicker.interfaces.js +2 -0
  144. package/es2020/src/picker/components/dayPicker/dayPicker.interfaces.js.map +1 -0
  145. package/es2020/src/picker/components/monthPicker/monthPicker.component.js +114 -0
  146. package/es2020/src/picker/components/monthPicker/monthPicker.component.js.map +1 -0
  147. package/es2020/src/picker/components/monthPicker/monthPicker.interfaces.js +2 -0
  148. package/es2020/src/picker/components/monthPicker/monthPicker.interfaces.js.map +1 -0
  149. package/es2020/src/picker/components/picker/picker.component.animations.js +71 -0
  150. package/es2020/src/picker/components/picker/picker.component.animations.js.map +1 -0
  151. package/es2020/src/picker/components/picker/picker.component.js +236 -0
  152. package/es2020/src/picker/components/picker/picker.component.js.map +1 -0
  153. package/es2020/src/picker/components/pickerBase.component.js +243 -0
  154. package/es2020/src/picker/components/pickerBase.component.js.map +1 -0
  155. package/es2020/src/picker/components/yearPicker/yearPicker.component.js +126 -0
  156. package/es2020/src/picker/components/yearPicker/yearPicker.component.js.map +1 -0
  157. package/es2020/src/picker/components/yearPicker/yearPicker.interfaces.js +2 -0
  158. package/es2020/src/picker/components/yearPicker/yearPicker.interfaces.js.map +1 -0
  159. package/es2020/src/picker/interfaces.js +5 -0
  160. package/es2020/src/picker/interfaces.js.map +1 -0
  161. package/es2020/src/picker/misc/datetimePicker.interface.js +2 -0
  162. package/es2020/src/picker/misc/datetimePicker.interface.js.map +1 -0
  163. package/es2020/src/picker/misc/tokens.js +6 -0
  164. package/es2020/src/picker/misc/tokens.js.map +1 -0
  165. package/es2020/src/picker/modules/picker.module.js +46 -0
  166. package/es2020/src/picker/modules/picker.module.js.map +1 -0
  167. package/es2020/src/picker/types.js +8 -0
  168. package/es2020/src/picker/types.js.map +1 -0
  169. package/es2020/src/pipes/asRequiredType.js +22 -0
  170. package/es2020/src/pipes/asRequiredType.js.map +1 -0
  171. package/es2020/src/pipes/dateConvert.pipe.js +35 -0
  172. package/es2020/src/pipes/dateConvert.pipe.js.map +1 -0
  173. package/es2020/src/pipes/dateFormat.pipe.js +45 -0
  174. package/es2020/src/pipes/dateFormat.pipe.js.map +1 -0
  175. package/es2020/src/selector/components/inputDateTime/inputDateTime.component.js +417 -0
  176. package/es2020/src/selector/components/inputDateTime/inputDateTime.component.js.map +1 -0
  177. package/es2020/src/selector/components/selector/selector.component.animations.js +15 -0
  178. package/es2020/src/selector/components/selector/selector.component.animations.js.map +1 -0
  179. package/es2020/src/selector/components/selector/selector.component.js +334 -0
  180. package/es2020/src/selector/components/selector/selector.component.js.map +1 -0
  181. package/es2020/src/selector/components/simpleInputDateTime/simpleInputDateTime.component.js +314 -0
  182. package/es2020/src/selector/components/simpleInputDateTime/simpleInputDateTime.component.js.map +1 -0
  183. package/es2020/src/selector/directives/datetimeMaxValidator/datetimeMaxValidator.directive.js +51 -0
  184. package/es2020/src/selector/directives/datetimeMaxValidator/datetimeMaxValidator.directive.js.map +1 -0
  185. package/es2020/src/selector/directives/datetimeMinValidator/datetimeMinValidator.directive.js +51 -0
  186. package/es2020/src/selector/directives/datetimeMinValidator/datetimeMinValidator.directive.js.map +1 -0
  187. package/es2020/src/selector/directives/datetimeValidator/datetimeValidator.directive.js +47 -0
  188. package/es2020/src/selector/directives/datetimeValidator/datetimeValidator.directive.js.map +1 -0
  189. package/es2020/src/selector/directives/selectorControlValueAccessor/selectorControlValueAccessor.directive.js +118 -0
  190. package/es2020/src/selector/directives/selectorControlValueAccessor/selectorControlValueAccessor.directive.js.map +1 -0
  191. package/es2020/src/selector/interfaces.js +2 -0
  192. package/es2020/src/selector/interfaces.js.map +1 -0
  193. package/es2020/src/selector/misc/datetimeSelector.interface.js +2 -0
  194. package/es2020/src/selector/misc/datetimeSelector.interface.js.map +1 -0
  195. package/es2020/src/selector/misc/tokens.js +6 -0
  196. package/es2020/src/selector/misc/tokens.js.map +1 -0
  197. package/es2020/src/selector/modules/basicSelector.module.js +20 -0
  198. package/es2020/src/selector/modules/basicSelector.module.js.map +1 -0
  199. package/es2020/src/selector/modules/selector.module.js +60 -0
  200. package/es2020/src/selector/modules/selector.module.js.map +1 -0
  201. package/es2020/src/selector/types.js +10 -0
  202. package/es2020/src/selector/types.js.map +1 -0
  203. package/es2020/src/services/dateApi.interface.js +2 -0
  204. package/es2020/src/services/dateApi.interface.js.map +1 -0
  205. package/es2020/src/services/datePositionParser.interface.js +2 -0
  206. package/es2020/src/services/datePositionParser.interface.js.map +1 -0
  207. package/es2020/src/services/datePositionParser.service.js +227 -0
  208. package/es2020/src/services/datePositionParser.service.js.map +1 -0
  209. package/es2020/src/services/dateTimeRelativeParser.service.js +65 -0
  210. package/es2020/src/services/dateTimeRelativeParser.service.js.map +1 -0
  211. package/es2020/src/services/dateValueProvider.service.js +58 -0
  212. package/es2020/src/services/dateValueProvider.service.js.map +1 -0
  213. package/es2020/src/services/formatProvider.interface.js +2 -0
  214. package/es2020/src/services/formatProvider.interface.js.map +1 -0
  215. package/es2020/src/services/index.js +4 -0
  216. package/es2020/src/services/index.js.map +1 -0
  217. package/karma.conf.d.ts +2 -0
  218. package/karma.conf.d.ts.map +1 -0
  219. package/moment/package.json +7 -7
  220. package/moment/src/index.d.ts +3 -0
  221. package/moment/src/index.d.ts.map +1 -0
  222. package/moment/src/misc/tokens.d.ts +5 -5
  223. package/moment/src/services/momentDateApi.service.d.ts +35 -32
  224. package/moment/src/services/momentDateApi.service.d.ts.map +1 -1
  225. package/package.json +100 -48
  226. package/src/index.d.ts +19 -0
  227. package/src/index.d.ts.map +1 -0
  228. package/src/misc/constants.d.ts +32 -32
  229. package/src/misc/datetime.interface.d.ts +34 -34
  230. package/src/misc/tokens.d.ts +10 -10
  231. package/src/misc/validators.d.ts +25 -25
  232. package/src/modules/datePipes.module.d.ts +12 -5
  233. package/src/modules/datePipes.module.d.ts.map +1 -1
  234. package/src/picker/components/dayPicker/dayPicker.component.d.ts +68 -65
  235. package/src/picker/components/dayPicker/dayPicker.component.d.ts.map +1 -1
  236. package/src/picker/components/dayPicker/dayPicker.component.html +7 -7
  237. package/src/picker/components/dayPicker/dayPicker.interfaces.d.ts +10 -10
  238. package/src/picker/components/monthPicker/monthPicker.component.d.ts +52 -49
  239. package/src/picker/components/monthPicker/monthPicker.component.d.ts.map +1 -1
  240. package/src/picker/components/monthPicker/monthPicker.component.html +6 -6
  241. package/src/picker/components/monthPicker/monthPicker.interfaces.d.ts +6 -6
  242. package/src/picker/components/picker/picker.component.animations.d.ts +4 -4
  243. package/src/picker/components/picker/picker.component.d.ts +104 -101
  244. package/src/picker/components/picker/picker.component.d.ts.map +1 -1
  245. package/src/picker/components/pickerBase.component.d.ts +169 -166
  246. package/src/picker/components/pickerBase.component.d.ts.map +1 -1
  247. package/src/picker/components/yearPicker/yearPicker.component.d.ts +57 -54
  248. package/src/picker/components/yearPicker/yearPicker.component.d.ts.map +1 -1
  249. package/src/picker/components/yearPicker/yearPicker.component.html +6 -6
  250. package/src/picker/components/yearPicker/yearPicker.interfaces.d.ts +6 -6
  251. package/src/picker/interfaces.d.ts +4 -4
  252. package/src/picker/misc/datetimePicker.interface.d.ts +188 -188
  253. package/src/picker/misc/tokens.d.ts +6 -6
  254. package/src/picker/modules/picker.module.d.ts +16 -5
  255. package/src/picker/modules/picker.module.d.ts.map +1 -1
  256. package/src/picker/types.d.ts +7 -7
  257. package/src/pipes/asRequiredType.d.ts +21 -0
  258. package/src/pipes/asRequiredType.d.ts.map +1 -0
  259. package/src/pipes/dateConvert.pipe.d.ts +18 -15
  260. package/src/pipes/dateConvert.pipe.d.ts.map +1 -1
  261. package/src/pipes/dateFormat.pipe.d.ts +20 -17
  262. package/src/pipes/dateFormat.pipe.d.ts.map +1 -1
  263. package/src/selector/components/inputDateTime/inputDateTime.component.d.ts +187 -184
  264. package/src/selector/components/inputDateTime/inputDateTime.component.d.ts.map +1 -1
  265. package/src/selector/components/selector/selector.component.animations.d.ts +4 -4
  266. package/src/selector/components/selector/selector.component.d.ts +155 -152
  267. package/src/selector/components/selector/selector.component.d.ts.map +1 -1
  268. package/src/selector/components/simpleInputDateTime/simpleInputDateTime.component.d.ts +170 -167
  269. package/src/selector/components/simpleInputDateTime/simpleInputDateTime.component.d.ts.map +1 -1
  270. package/src/selector/directives/datetimeMaxValidator/datetimeMaxValidator.directive.d.ts +22 -19
  271. package/src/selector/directives/datetimeMaxValidator/datetimeMaxValidator.directive.d.ts.map +1 -1
  272. package/src/selector/directives/datetimeMinValidator/datetimeMinValidator.directive.d.ts +22 -19
  273. package/src/selector/directives/datetimeMinValidator/datetimeMinValidator.directive.d.ts.map +1 -1
  274. package/src/selector/directives/datetimeValidator/datetimeValidator.directive.d.ts +21 -18
  275. package/src/selector/directives/datetimeValidator/datetimeValidator.directive.d.ts.map +1 -1
  276. package/src/selector/directives/selectorControlValueAccessor/selectorControlValueAccessor.directive.d.ts +53 -50
  277. package/src/selector/directives/selectorControlValueAccessor/selectorControlValueAccessor.directive.d.ts.map +1 -1
  278. package/src/selector/interfaces.d.ts +1 -1
  279. package/src/selector/misc/datetimeSelector.interface.d.ts +82 -82
  280. package/src/selector/misc/tokens.d.ts +6 -6
  281. package/src/selector/modules/basicSelector.module.d.ts +10 -5
  282. package/src/selector/modules/basicSelector.module.d.ts.map +1 -1
  283. package/src/selector/modules/selector.module.d.ts +18 -5
  284. package/src/selector/modules/selector.module.d.ts.map +1 -1
  285. package/src/selector/types.d.ts +9 -9
  286. package/src/services/dateApi.interface.d.ts +275 -275
  287. package/src/services/datePositionParser.interface.d.ts +40 -40
  288. package/src/services/datePositionParser.service.d.ts +60 -57
  289. package/src/services/datePositionParser.service.d.ts.map +1 -1
  290. package/src/services/dateTimeRelativeParser.service.d.ts +21 -18
  291. package/src/services/dateTimeRelativeParser.service.d.ts.map +1 -1
  292. package/src/services/dateValueProvider.service.d.ts +18 -15
  293. package/src/services/dateValueProvider.service.d.ts.map +1 -1
  294. package/src/services/formatProvider.interface.d.ts +17 -17
  295. package/src/services/index.d.ts +3 -3
  296. package/tsconfig.karma.json +5 -6
  297. package/version.bak +1 -1
  298. package/appveyor.yml +0 -70
  299. package/date-fns/dist/es2015/date-fns/index.js +0 -10
  300. package/date-fns/dist/es2015/date-fns/public_api.js +0 -7
  301. package/date-fns/dist/es2015/date-fns/src/date-fns.js +0 -9
  302. package/date-fns/dist/es2015/date-fns/src/misc/tokens.js +0 -32
  303. package/date-fns/dist/es2015/date-fns/src/services/dateFnsDateApi.service.js +0 -512
  304. package/date-fns/dist/es2015/date-fns/src/services/dateFnsLocale.service.js +0 -18
  305. package/date-fns/dist/es5/date-fns/index.js +0 -10
  306. package/date-fns/dist/es5/date-fns/public_api.js +0 -7
  307. package/date-fns/dist/es5/date-fns/src/date-fns.js +0 -9
  308. package/date-fns/dist/es5/date-fns/src/misc/tokens.js +0 -32
  309. package/date-fns/dist/es5/date-fns/src/services/dateFnsDateApi.service.js +0 -902
  310. package/date-fns/dist/es5/date-fns/src/services/dateFnsLocale.service.js +0 -18
  311. package/date-fns/index.d.ts +0 -5
  312. package/date-fns/index.d.ts.map +0 -1
  313. package/date-fns/index.metadata.json +0 -1
  314. package/date-fns/public_api.d.ts +0 -2
  315. package/date-fns/public_api.d.ts.map +0 -1
  316. package/date-fns/src/date-fns.d.ts.map +0 -1
  317. package/date-fns/src/services/dateFnsDateApi.service.ngfactory.d.ts.map +0 -1
  318. package/datetime.d.ts +0 -7
  319. package/datetime.d.ts.map +0 -1
  320. package/datetime.metadata.json +0 -1
  321. package/dist/es2015/datetime.js +0 -10
  322. package/dist/es2015/public_api.js +0 -7
  323. package/dist/es2015/src/datetime.js +0 -24
  324. package/dist/es2015/src/misc/constants.js +0 -46
  325. package/dist/es2015/src/misc/datetime.interface.js +0 -52
  326. package/dist/es2015/src/misc/tokens.js +0 -29
  327. package/dist/es2015/src/misc/validators.js +0 -80
  328. package/dist/es2015/src/modules/datePipes.module.js +0 -26
  329. package/dist/es2015/src/picker/components/dayPicker/dayPicker.component.js +0 -215
  330. package/dist/es2015/src/picker/components/dayPicker/dayPicker.interfaces.js +0 -18
  331. package/dist/es2015/src/picker/components/monthPicker/monthPicker.component.js +0 -138
  332. package/dist/es2015/src/picker/components/monthPicker/monthPicker.interfaces.js +0 -11
  333. package/dist/es2015/src/picker/components/picker/picker.component.animations.js +0 -77
  334. package/dist/es2015/src/picker/components/picker/picker.component.js +0 -386
  335. package/dist/es2015/src/picker/components/pickerBase.component.js +0 -406
  336. package/dist/es2015/src/picker/components/yearPicker/yearPicker.component.js +0 -158
  337. package/dist/es2015/src/picker/components/yearPicker/yearPicker.interfaces.js +0 -11
  338. package/dist/es2015/src/picker/interfaces.js +0 -10
  339. package/dist/es2015/src/picker/misc/datetimePicker.interface.js +0 -245
  340. package/dist/es2015/src/picker/misc/tokens.js +0 -12
  341. package/dist/es2015/src/picker/modules/picker.module.js +0 -35
  342. package/dist/es2015/src/picker/types.js +0 -13
  343. package/dist/es2015/src/pipes/dateConvert.pipe.js +0 -50
  344. package/dist/es2015/src/pipes/dateFormat.pipe.js +0 -64
  345. package/dist/es2015/src/selector/components/inputDateTime/inputDateTime.component.js +0 -588
  346. package/dist/es2015/src/selector/components/selector/selector.component.animations.js +0 -21
  347. package/dist/es2015/src/selector/components/selector/selector.component.js +0 -514
  348. package/dist/es2015/src/selector/components/simpleInputDateTime/simpleInputDateTime.component.js +0 -456
  349. package/dist/es2015/src/selector/directives/datetimeMaxValidator/datetimeMaxValidator.directive.js +0 -73
  350. package/dist/es2015/src/selector/directives/datetimeMinValidator/datetimeMinValidator.directive.js +0 -73
  351. package/dist/es2015/src/selector/directives/datetimeValidator/datetimeValidator.directive.js +0 -70
  352. package/dist/es2015/src/selector/directives/selectorControlValueAccessor/selectorControlValueAccessor.directive.js +0 -171
  353. package/dist/es2015/src/selector/interfaces.js +0 -7
  354. package/dist/es2015/src/selector/misc/datetimeSelector.interface.js +0 -106
  355. package/dist/es2015/src/selector/misc/tokens.js +0 -12
  356. package/dist/es2015/src/selector/modules/basicSelector.module.js +0 -20
  357. package/dist/es2015/src/selector/modules/selector.module.js +0 -45
  358. package/dist/es2015/src/selector/types.js +0 -15
  359. package/dist/es2015/src/services/dateApi.interface.js +0 -316
  360. package/dist/es2015/src/services/datePositionParser.interface.js +0 -56
  361. package/dist/es2015/src/services/datePositionParser.service.js +0 -297
  362. package/dist/es2015/src/services/dateTimeRelativeParser.service.js +0 -97
  363. package/dist/es2015/src/services/dateValueProvider.service.js +0 -79
  364. package/dist/es2015/src/services/formatProvider.interface.js +0 -28
  365. package/dist/es2015/src/services/index.js +0 -9
  366. package/dist/es5/datetime.js +0 -10
  367. package/dist/es5/public_api.js +0 -7
  368. package/dist/es5/src/datetime.js +0 -24
  369. package/dist/es5/src/misc/constants.js +0 -46
  370. package/dist/es5/src/misc/datetime.interface.js +0 -52
  371. package/dist/es5/src/misc/tokens.js +0 -29
  372. package/dist/es5/src/misc/validators.js +0 -124
  373. package/dist/es5/src/modules/datePipes.module.js +0 -30
  374. package/dist/es5/src/picker/components/dayPicker/dayPicker.component.js +0 -323
  375. package/dist/es5/src/picker/components/dayPicker/dayPicker.interfaces.js +0 -18
  376. package/dist/es5/src/picker/components/monthPicker/monthPicker.component.js +0 -233
  377. package/dist/es5/src/picker/components/monthPicker/monthPicker.interfaces.js +0 -11
  378. package/dist/es5/src/picker/components/picker/picker.component.animations.js +0 -77
  379. package/dist/es5/src/picker/components/picker/picker.component.js +0 -460
  380. package/dist/es5/src/picker/components/pickerBase.component.js +0 -561
  381. package/dist/es5/src/picker/components/yearPicker/yearPicker.component.js +0 -253
  382. package/dist/es5/src/picker/components/yearPicker/yearPicker.interfaces.js +0 -11
  383. package/dist/es5/src/picker/interfaces.js +0 -10
  384. package/dist/es5/src/picker/misc/datetimePicker.interface.js +0 -245
  385. package/dist/es5/src/picker/misc/tokens.js +0 -12
  386. package/dist/es5/src/picker/modules/picker.module.js +0 -39
  387. package/dist/es5/src/picker/types.js +0 -13
  388. package/dist/es5/src/pipes/dateConvert.pipe.js +0 -63
  389. package/dist/es5/src/pipes/dateFormat.pipe.js +0 -79
  390. package/dist/es5/src/selector/components/inputDateTime/inputDateTime.component.js +0 -808
  391. package/dist/es5/src/selector/components/selector/selector.component.animations.js +0 -21
  392. package/dist/es5/src/selector/components/selector/selector.component.js +0 -653
  393. package/dist/es5/src/selector/components/simpleInputDateTime/simpleInputDateTime.component.js +0 -656
  394. package/dist/es5/src/selector/directives/datetimeMaxValidator/datetimeMaxValidator.directive.js +0 -84
  395. package/dist/es5/src/selector/directives/datetimeMinValidator/datetimeMinValidator.directive.js +0 -84
  396. package/dist/es5/src/selector/directives/datetimeValidator/datetimeValidator.directive.js +0 -82
  397. package/dist/es5/src/selector/directives/selectorControlValueAccessor/selectorControlValueAccessor.directive.js +0 -230
  398. package/dist/es5/src/selector/interfaces.js +0 -7
  399. package/dist/es5/src/selector/misc/datetimeSelector.interface.js +0 -106
  400. package/dist/es5/src/selector/misc/tokens.js +0 -12
  401. package/dist/es5/src/selector/modules/basicSelector.module.js +0 -24
  402. package/dist/es5/src/selector/modules/selector.module.js +0 -49
  403. package/dist/es5/src/selector/types.js +0 -15
  404. package/dist/es5/src/services/dateApi.interface.js +0 -316
  405. package/dist/es5/src/services/datePositionParser.interface.js +0 -56
  406. package/dist/es5/src/services/datePositionParser.service.js +0 -366
  407. package/dist/es5/src/services/dateTimeRelativeParser.service.js +0 -108
  408. package/dist/es5/src/services/dateValueProvider.service.js +0 -92
  409. package/dist/es5/src/services/formatProvider.interface.js +0 -28
  410. package/dist/es5/src/services/index.js +0 -9
  411. package/moment/dist/es2015/moment/index.js +0 -10
  412. package/moment/dist/es2015/moment/public_api.js +0 -7
  413. package/moment/dist/es2015/moment/src/misc/tokens.js +0 -26
  414. package/moment/dist/es2015/moment/src/moment.js +0 -8
  415. package/moment/dist/es2015/moment/src/services/momentDateApi.service.js +0 -466
  416. package/moment/dist/es5/moment/index.js +0 -10
  417. package/moment/dist/es5/moment/public_api.js +0 -7
  418. package/moment/dist/es5/moment/src/misc/tokens.js +0 -26
  419. package/moment/dist/es5/moment/src/moment.js +0 -8
  420. package/moment/dist/es5/moment/src/services/momentDateApi.service.js +0 -858
  421. package/moment/index.d.ts +0 -5
  422. package/moment/index.d.ts.map +0 -1
  423. package/moment/index.metadata.json +0 -1
  424. package/moment/public_api.d.ts +0 -2
  425. package/moment/public_api.d.ts.map +0 -1
  426. package/moment/src/moment.d.ts.map +0 -1
  427. package/moment/src/services/momentDateApi.service.ngfactory.d.ts.map +0 -1
  428. package/public_api.d.ts +0 -2
  429. package/public_api.d.ts.map +0 -1
  430. package/src/datetime.d.ts.map +0 -1
  431. package/src/modules/datePipes.module.ngfactory.d.ts.map +0 -1
  432. package/src/picker/components/dayPicker/dayPicker.component.css.shim.ngstyle.d.ts.map +0 -1
  433. package/src/picker/components/dayPicker/dayPicker.component.ngfactory.d.ts.map +0 -1
  434. package/src/picker/components/monthPicker/monthPicker.component.css.shim.ngstyle.d.ts.map +0 -1
  435. package/src/picker/components/monthPicker/monthPicker.component.ngfactory.d.ts.map +0 -1
  436. package/src/picker/components/picker/picker.component.ngfactory.d.ts.map +0 -1
  437. package/src/picker/components/yearPicker/yearPicker.component.css.shim.ngstyle.d.ts.map +0 -1
  438. package/src/picker/components/yearPicker/yearPicker.component.ngfactory.d.ts.map +0 -1
  439. package/src/picker/modules/picker.module.ngfactory.d.ts.map +0 -1
  440. package/src/pipes/dateConvert.pipe.ngfactory.d.ts.map +0 -1
  441. package/src/pipes/dateFormat.pipe.ngfactory.d.ts.map +0 -1
  442. package/src/selector/components/inputDateTime/inputDateTime.component.css.shim.ngstyle.d.ts.map +0 -1
  443. package/src/selector/components/inputDateTime/inputDateTime.component.ngfactory.d.ts.map +0 -1
  444. package/src/selector/components/selector/selector.component.css.shim.ngstyle.d.ts.map +0 -1
  445. package/src/selector/components/selector/selector.component.ngfactory.d.ts.map +0 -1
  446. package/src/selector/components/simpleInputDateTime/simpleInputDateTime.component.css.shim.ngstyle.d.ts.map +0 -1
  447. package/src/selector/components/simpleInputDateTime/simpleInputDateTime.component.ngfactory.d.ts.map +0 -1
  448. package/src/selector/directives/datetimeMaxValidator/datetimeMaxValidator.directive.ngfactory.d.ts.map +0 -1
  449. package/src/selector/directives/datetimeMinValidator/datetimeMinValidator.directive.ngfactory.d.ts.map +0 -1
  450. package/src/selector/directives/datetimeValidator/datetimeValidator.directive.ngfactory.d.ts.map +0 -1
  451. package/src/selector/directives/selectorControlValueAccessor/selectorControlValueAccessor.directive.ngfactory.d.ts.map +0 -1
  452. package/src/selector/modules/basicSelector.module.ngfactory.d.ts.map +0 -1
  453. package/src/selector/modules/selector.module.ngfactory.d.ts.map +0 -1
  454. package/src/services/datePositionParser.service.ngfactory.d.ts.map +0 -1
  455. package/src/services/dateTimeRelativeParser.service.ngfactory.d.ts.map +0 -1
  456. package/src/services/dateValueProvider.service.ngfactory.d.ts.map +0 -1
@@ -1,858 +0,0 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * Generated from: moment/src/services/momentDateApi.service.ts
4
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
- */
6
- import { Injectable } from '@angular/core';
7
- import { DateTimeRelativeParser } from '@anglr/datetime';
8
- import { isBlank, isPresent } from '@jscrpt/common';
9
- import moment from 'moment';
10
- /**
11
- * Instance of object wrapping TDate, allowing manipulation with it
12
- */
13
- var /**
14
- * Instance of object wrapping TDate, allowing manipulation with it
15
- */
16
- MomentDateApiObject = /** @class */ (function () {
17
- //######################### constructor #########################
18
- function MomentDateApiObject(value, format) {
19
- this._value = this._originalValue = moment(value, format);
20
- }
21
- Object.defineProperty(MomentDateApiObject.prototype, "originalValue", {
22
- //######################### public properties - implementation of DateApiObject #########################
23
- /**
24
- * Original value that is not changed unless 'updateOriginal' is called
25
- */
26
- get:
27
- //######################### public properties - implementation of DateApiObject #########################
28
- /**
29
- * Original value that is not changed unless 'updateOriginal' is called
30
- * @return {?}
31
- */
32
- function () {
33
- return this._originalValue;
34
- },
35
- enumerable: false,
36
- configurable: true
37
- });
38
- Object.defineProperty(MomentDateApiObject.prototype, "value", {
39
- /**
40
- * Instance of date
41
- */
42
- get: /**
43
- * Instance of date
44
- * @return {?}
45
- */
46
- function () {
47
- return this._value;
48
- },
49
- enumerable: false,
50
- configurable: true
51
- });
52
- //######################### public methods - implementation of DateApiObject #########################
53
- /**
54
- * Gets indication whether provided instance of date is valid
55
- */
56
- //######################### public methods - implementation of DateApiObject #########################
57
- /**
58
- * Gets indication whether provided instance of date is valid
59
- * @return {?}
60
- */
61
- MomentDateApiObject.prototype.isValid =
62
- //######################### public methods - implementation of DateApiObject #########################
63
- /**
64
- * Gets indication whether provided instance of date is valid
65
- * @return {?}
66
- */
67
- function () {
68
- return this._value.isValid();
69
- };
70
- /**
71
- * Gets indication whether provided instance of date is weekend day
72
- */
73
- /**
74
- * Gets indication whether provided instance of date is weekend day
75
- * @return {?}
76
- */
77
- MomentDateApiObject.prototype.isWeekend = /**
78
- * Gets indication whether provided instance of date is weekend day
79
- * @return {?}
80
- */
81
- function () {
82
- /** @type {?} */
83
- var weekday = this._value.isoWeekday();
84
- return weekday == 6 || weekday == 7;
85
- };
86
- /**
87
- * Formats date value
88
- * @param format - Format token used for creating formatted string
89
- */
90
- /**
91
- * Formats date value
92
- * @param {?} format - Format token used for creating formatted string
93
- * @return {?}
94
- */
95
- MomentDateApiObject.prototype.format = /**
96
- * Formats date value
97
- * @param {?} format - Format token used for creating formatted string
98
- * @return {?}
99
- */
100
- function (format) {
101
- return this._value.format(format.replace(/y/g, 'Y').replace(/d/g, 'D'));
102
- };
103
- /**
104
- * Updates value to start date and time of current decade
105
- * @returns Itself for fluent API
106
- */
107
- /**
108
- * Updates value to start date and time of current decade
109
- * @return {?} Itself for fluent API
110
- */
111
- MomentDateApiObject.prototype.startOfDecade = /**
112
- * Updates value to start date and time of current decade
113
- * @return {?} Itself for fluent API
114
- */
115
- function () {
116
- /** @type {?} */
117
- var diff = (this._value.year() % 10);
118
- this._value = moment(this._value).subtract(diff, 'years').startOf('year');
119
- return this;
120
- };
121
- /**
122
- * Updates value to end date and time of current decade
123
- * @returns Itself for fluent API
124
- */
125
- /**
126
- * Updates value to end date and time of current decade
127
- * @return {?} Itself for fluent API
128
- */
129
- MomentDateApiObject.prototype.endOfDecade = /**
130
- * Updates value to end date and time of current decade
131
- * @return {?} Itself for fluent API
132
- */
133
- function () {
134
- /** @type {?} */
135
- var diff = 9 - (this._value.year() % 10);
136
- this._value = moment(this._value).add(diff, 'years').endOf('year');
137
- return this;
138
- };
139
- /**
140
- * Updates value to start date and time of current year
141
- * @returns Itself for fluent API
142
- */
143
- /**
144
- * Updates value to start date and time of current year
145
- * @return {?} Itself for fluent API
146
- */
147
- MomentDateApiObject.prototype.startOfYear = /**
148
- * Updates value to start date and time of current year
149
- * @return {?} Itself for fluent API
150
- */
151
- function () {
152
- this._value = moment(this._value).startOf('year');
153
- return this;
154
- };
155
- /**
156
- * Updates value to end date and time of current year
157
- * @returns Itself for fluent API
158
- */
159
- /**
160
- * Updates value to end date and time of current year
161
- * @return {?} Itself for fluent API
162
- */
163
- MomentDateApiObject.prototype.endOfYear = /**
164
- * Updates value to end date and time of current year
165
- * @return {?} Itself for fluent API
166
- */
167
- function () {
168
- this._value = moment(this._value).endOf('year');
169
- return this;
170
- };
171
- /**
172
- * Add years, if count not specified adds 1 year
173
- * @param count - Number of years count
174
- * @returns Itself for fluent API
175
- */
176
- /**
177
- * Add years, if count not specified adds 1 year
178
- * @param {?=} count - Number of years count
179
- * @return {?} Itself for fluent API
180
- */
181
- MomentDateApiObject.prototype.addYears = /**
182
- * Add years, if count not specified adds 1 year
183
- * @param {?=} count - Number of years count
184
- * @return {?} Itself for fluent API
185
- */
186
- function (count) {
187
- this._value = moment(this._value).add(count !== null && count !== void 0 ? count : 1, 'years');
188
- return this;
189
- };
190
- /**
191
- * Subtract years, if count not specified subtract 1 year
192
- * @param count - Number of years count
193
- * @returns Itself for fluent API
194
- */
195
- /**
196
- * Subtract years, if count not specified subtract 1 year
197
- * @param {?=} count - Number of years count
198
- * @return {?} Itself for fluent API
199
- */
200
- MomentDateApiObject.prototype.subtractYears = /**
201
- * Subtract years, if count not specified subtract 1 year
202
- * @param {?=} count - Number of years count
203
- * @return {?} Itself for fluent API
204
- */
205
- function (count) {
206
- this._value = moment(this._value).subtract(count !== null && count !== void 0 ? count : 1, 'years');
207
- return this;
208
- };
209
- /**
210
- * Updates value to start date and time of current month
211
- * @returns Itself for fluent API
212
- */
213
- /**
214
- * Updates value to start date and time of current month
215
- * @return {?} Itself for fluent API
216
- */
217
- MomentDateApiObject.prototype.startOfMonth = /**
218
- * Updates value to start date and time of current month
219
- * @return {?} Itself for fluent API
220
- */
221
- function () {
222
- this._value = moment(this._value).startOf('month');
223
- return this;
224
- };
225
- /**
226
- * Updates value to end date and time of current month
227
- * @returns Itself for fluent API
228
- */
229
- /**
230
- * Updates value to end date and time of current month
231
- * @return {?} Itself for fluent API
232
- */
233
- MomentDateApiObject.prototype.endOfMonth = /**
234
- * Updates value to end date and time of current month
235
- * @return {?} Itself for fluent API
236
- */
237
- function () {
238
- this._value = moment(this._value).endOf('month');
239
- return this;
240
- };
241
- /**
242
- * Add months, if count not specified adds 1 month
243
- * @param count - Number of months count
244
- * @returns Itself for fluent API
245
- */
246
- /**
247
- * Add months, if count not specified adds 1 month
248
- * @param {?=} count - Number of months count
249
- * @return {?} Itself for fluent API
250
- */
251
- MomentDateApiObject.prototype.addMonths = /**
252
- * Add months, if count not specified adds 1 month
253
- * @param {?=} count - Number of months count
254
- * @return {?} Itself for fluent API
255
- */
256
- function (count) {
257
- this._value = moment(this._value).add(count !== null && count !== void 0 ? count : 1, 'months');
258
- return this;
259
- };
260
- /**
261
- * Subtract months, if count not specified subtract 1 month
262
- * @param count - Number of months count
263
- * @returns Itself for fluent API
264
- */
265
- /**
266
- * Subtract months, if count not specified subtract 1 month
267
- * @param {?=} count - Number of months count
268
- * @return {?} Itself for fluent API
269
- */
270
- MomentDateApiObject.prototype.subtractMonths = /**
271
- * Subtract months, if count not specified subtract 1 month
272
- * @param {?=} count - Number of months count
273
- * @return {?} Itself for fluent API
274
- */
275
- function (count) {
276
- this._value = moment(this._value).subtract(count !== null && count !== void 0 ? count : 1, 'months');
277
- return this;
278
- };
279
- /**
280
- * Updates value to start date and time of current week
281
- * @returns Itself for fluent API
282
- */
283
- /**
284
- * Updates value to start date and time of current week
285
- * @return {?} Itself for fluent API
286
- */
287
- MomentDateApiObject.prototype.startOfWeek = /**
288
- * Updates value to start date and time of current week
289
- * @return {?} Itself for fluent API
290
- */
291
- function () {
292
- this._value = moment(this._value).startOf('week');
293
- return this;
294
- };
295
- /**
296
- * Updates value to end date and time of current week
297
- * @returns Itself for fluent API
298
- */
299
- /**
300
- * Updates value to end date and time of current week
301
- * @return {?} Itself for fluent API
302
- */
303
- MomentDateApiObject.prototype.endOfWeek = /**
304
- * Updates value to end date and time of current week
305
- * @return {?} Itself for fluent API
306
- */
307
- function () {
308
- this._value = moment(this._value).endOf('week');
309
- return this;
310
- };
311
- /**
312
- * Add weeks, if count not specified adds 1 week
313
- * @param count - Number of weeks count
314
- * @returns Itself for fluent API
315
- */
316
- /**
317
- * Add weeks, if count not specified adds 1 week
318
- * @param {?=} count - Number of weeks count
319
- * @return {?} Itself for fluent API
320
- */
321
- MomentDateApiObject.prototype.addWeeks = /**
322
- * Add weeks, if count not specified adds 1 week
323
- * @param {?=} count - Number of weeks count
324
- * @return {?} Itself for fluent API
325
- */
326
- function (count) {
327
- this._value = moment(this._value).add(count !== null && count !== void 0 ? count : 1, 'weeks');
328
- return this;
329
- };
330
- /**
331
- * Subtract weeks, if count not specified subtract 1 week
332
- * @param count - Number of weeks count
333
- * @returns Itself for fluent API
334
- */
335
- /**
336
- * Subtract weeks, if count not specified subtract 1 week
337
- * @param {?=} count - Number of weeks count
338
- * @return {?} Itself for fluent API
339
- */
340
- MomentDateApiObject.prototype.subtractWeeks = /**
341
- * Subtract weeks, if count not specified subtract 1 week
342
- * @param {?=} count - Number of weeks count
343
- * @return {?} Itself for fluent API
344
- */
345
- function (count) {
346
- this._value = moment(this._value).subtract(count !== null && count !== void 0 ? count : 1, 'weeks');
347
- return this;
348
- };
349
- /**
350
- * Updates value to start date and time of current day
351
- * @returns Itself for fluent API
352
- */
353
- /**
354
- * Updates value to start date and time of current day
355
- * @return {?} Itself for fluent API
356
- */
357
- MomentDateApiObject.prototype.startOfDay = /**
358
- * Updates value to start date and time of current day
359
- * @return {?} Itself for fluent API
360
- */
361
- function () {
362
- this._value = moment(this._value).startOf('day');
363
- return this;
364
- };
365
- /**
366
- * Updates value to end date and time of current day
367
- * @returns Itself for fluent API
368
- */
369
- /**
370
- * Updates value to end date and time of current day
371
- * @return {?} Itself for fluent API
372
- */
373
- MomentDateApiObject.prototype.endOfDay = /**
374
- * Updates value to end date and time of current day
375
- * @return {?} Itself for fluent API
376
- */
377
- function () {
378
- this._value = moment(this._value).endOf('day');
379
- return this;
380
- };
381
- /**
382
- * Add days, if count not specified adds 1 day
383
- * @param count - Number of days count
384
- * @returns Itself for fluent API
385
- */
386
- /**
387
- * Add days, if count not specified adds 1 day
388
- * @param {?=} count - Number of days count
389
- * @return {?} Itself for fluent API
390
- */
391
- MomentDateApiObject.prototype.addDays = /**
392
- * Add days, if count not specified adds 1 day
393
- * @param {?=} count - Number of days count
394
- * @return {?} Itself for fluent API
395
- */
396
- function (count) {
397
- this._value = moment(this._value).add(count !== null && count !== void 0 ? count : 1, 'days');
398
- return this;
399
- };
400
- /**
401
- * Subtract days, if count not specified subtract 1 day
402
- * @param count - Number of days count
403
- * @returns Itself for fluent API
404
- */
405
- /**
406
- * Subtract days, if count not specified subtract 1 day
407
- * @param {?=} count - Number of days count
408
- * @return {?} Itself for fluent API
409
- */
410
- MomentDateApiObject.prototype.subtractDays = /**
411
- * Subtract days, if count not specified subtract 1 day
412
- * @param {?=} count - Number of days count
413
- * @return {?} Itself for fluent API
414
- */
415
- function (count) {
416
- this._value = moment(this._value).subtract(count !== null && count !== void 0 ? count : 1, 'days');
417
- return this;
418
- };
419
- /**
420
- * Gets number of days in month
421
- */
422
- /**
423
- * Gets number of days in month
424
- * @return {?}
425
- */
426
- MomentDateApiObject.prototype.daysInMonth = /**
427
- * Gets number of days in month
428
- * @return {?}
429
- */
430
- function () {
431
- return this._value.daysInMonth();
432
- };
433
- /**
434
- * Gets or sets year
435
- * @param year - If specified, sets year
436
- */
437
- /**
438
- * Gets or sets year
439
- * @param {?=} year - If specified, sets year
440
- * @return {?}
441
- */
442
- MomentDateApiObject.prototype.year = /**
443
- * Gets or sets year
444
- * @param {?=} year - If specified, sets year
445
- * @return {?}
446
- */
447
- function (year) {
448
- if (isPresent(year)) {
449
- this._value = moment(this._value).year((/** @type {?} */ (year)));
450
- return this;
451
- }
452
- return this._value.year();
453
- };
454
- /**
455
- * Gets or sets month
456
- * @param month - If specified, sets month
457
- */
458
- /**
459
- * Gets or sets month
460
- * @param {?=} month - If specified, sets month
461
- * @return {?}
462
- */
463
- MomentDateApiObject.prototype.month = /**
464
- * Gets or sets month
465
- * @param {?=} month - If specified, sets month
466
- * @return {?}
467
- */
468
- function (month) {
469
- if (isPresent(month)) {
470
- this._value = moment(this._value).month((/** @type {?} */ (month)));
471
- return this;
472
- }
473
- return this._value.month();
474
- };
475
- /**
476
- * Gets or sets day of month one based
477
- * @param day - If specified, sets day of month
478
- */
479
- /**
480
- * Gets or sets day of month one based
481
- * @param {?=} day - If specified, sets day of month
482
- * @return {?}
483
- */
484
- MomentDateApiObject.prototype.dayOfMonth = /**
485
- * Gets or sets day of month one based
486
- * @param {?=} day - If specified, sets day of month
487
- * @return {?}
488
- */
489
- function (day) {
490
- if (isPresent(day)) {
491
- this._value = moment(this._value).date((/** @type {?} */ (day)));
492
- return this;
493
- }
494
- return this._value.date();
495
- };
496
- /**
497
- * Gets or sets day of week zero based, first is monday
498
- * @param day - If specified, sets day of week
499
- */
500
- /**
501
- * Gets or sets day of week zero based, first is monday
502
- * @param {?=} day - If specified, sets day of week
503
- * @return {?}
504
- */
505
- MomentDateApiObject.prototype.dayOfWeek = /**
506
- * Gets or sets day of week zero based, first is monday
507
- * @param {?=} day - If specified, sets day of week
508
- * @return {?}
509
- */
510
- function (day) {
511
- if (isPresent(day)) {
512
- this._value = moment(this._value).weekday((/** @type {?} */ (day)));
513
- return this;
514
- }
515
- return this._value.weekday();
516
- };
517
- /**
518
- * Gets indication whether current value is before 'date'
519
- * @param date - Date which is this date compared to
520
- */
521
- /**
522
- * Gets indication whether current value is before 'date'
523
- * @param {?} date - Date which is this date compared to
524
- * @return {?}
525
- */
526
- MomentDateApiObject.prototype.isBefore = /**
527
- * Gets indication whether current value is before 'date'
528
- * @param {?} date - Date which is this date compared to
529
- * @return {?}
530
- */
531
- function (date) {
532
- return this._value.isBefore(date);
533
- };
534
- /**
535
- * Gets indication whether current value is after 'date'
536
- * @param date - Date which is this date compared to
537
- */
538
- /**
539
- * Gets indication whether current value is after 'date'
540
- * @param {?} date - Date which is this date compared to
541
- * @return {?}
542
- */
543
- MomentDateApiObject.prototype.isAfter = /**
544
- * Gets indication whether current value is after 'date'
545
- * @param {?} date - Date which is this date compared to
546
- * @return {?}
547
- */
548
- function (date) {
549
- return this._value.isAfter(date);
550
- };
551
- /**
552
- * Gets number of days between this and provided date
553
- * @param date - Date which is used for computation of diff against
554
- */
555
- /**
556
- * Gets number of days between this and provided date
557
- * @param {?} date - Date which is used for computation of diff against
558
- * @return {?}
559
- */
560
- MomentDateApiObject.prototype.diffDays = /**
561
- * Gets number of days between this and provided date
562
- * @param {?} date - Date which is used for computation of diff against
563
- * @return {?}
564
- */
565
- function (date) {
566
- return moment(this._value).startOf('day').diff(moment(date).startOf('day'), 'days');
567
- };
568
- /**
569
- * Compares whether this date is same week as provided date
570
- * @param date - Date which is used for comparison of same week
571
- */
572
- /**
573
- * Compares whether this date is same week as provided date
574
- * @param {?} date - Date which is used for comparison of same week
575
- * @return {?}
576
- */
577
- MomentDateApiObject.prototype.isSameWeek = /**
578
- * Compares whether this date is same week as provided date
579
- * @param {?} date - Date which is used for comparison of same week
580
- * @return {?}
581
- */
582
- function (date) {
583
- return this._value.isSame(date, 'week');
584
- };
585
- /**
586
- * Compares whether this date is same decade as provided date
587
- * @param date - Date which is used for comparison of same decade
588
- */
589
- /**
590
- * Compares whether this date is same decade as provided date
591
- * @param {?} date - Date which is used for comparison of same decade
592
- * @return {?}
593
- */
594
- MomentDateApiObject.prototype.isSameDecade = /**
595
- * Compares whether this date is same decade as provided date
596
- * @param {?} date - Date which is used for comparison of same decade
597
- * @return {?}
598
- */
599
- function (date) {
600
- /** @type {?} */
601
- var year = this._value.year();
602
- /** @type {?} */
603
- var start = year - (year % 10);
604
- /** @type {?} */
605
- var end = start + 10;
606
- return date.year() >= start && date.year() < end;
607
- };
608
- /**
609
- * Compares whether this date is same year as provided date
610
- * @param date - Date which is used for comparison of same year
611
- */
612
- /**
613
- * Compares whether this date is same year as provided date
614
- * @param {?} date - Date which is used for comparison of same year
615
- * @return {?}
616
- */
617
- MomentDateApiObject.prototype.isSameYear = /**
618
- * Compares whether this date is same year as provided date
619
- * @param {?} date - Date which is used for comparison of same year
620
- * @return {?}
621
- */
622
- function (date) {
623
- return this._value.isSame(date, 'year');
624
- };
625
- /**
626
- * Compares whether this date is same month as provided date
627
- * @param date - Date which is used for comparison of same month
628
- */
629
- /**
630
- * Compares whether this date is same month as provided date
631
- * @param {?} date - Date which is used for comparison of same month
632
- * @return {?}
633
- */
634
- MomentDateApiObject.prototype.isSameMonth = /**
635
- * Compares whether this date is same month as provided date
636
- * @param {?} date - Date which is used for comparison of same month
637
- * @return {?}
638
- */
639
- function (date) {
640
- return this._value.isSame(date, 'month');
641
- };
642
- /**
643
- * Compares whether this date is same day as provided date
644
- * @param date - Date which is used for comparison of same day
645
- */
646
- /**
647
- * Compares whether this date is same day as provided date
648
- * @param {?} date - Date which is used for comparison of same day
649
- * @return {?}
650
- */
651
- MomentDateApiObject.prototype.isSameDay = /**
652
- * Compares whether this date is same day as provided date
653
- * @param {?} date - Date which is used for comparison of same day
654
- * @return {?}
655
- */
656
- function (date) {
657
- return this._value.isSame(date, 'day');
658
- };
659
- /**
660
- * Creates clone of this instance, value and originalValue have same value and are cloned from value
661
- */
662
- /**
663
- * Creates clone of this instance, value and originalValue have same value and are cloned from value
664
- * @return {?}
665
- */
666
- MomentDateApiObject.prototype.clone = /**
667
- * Creates clone of this instance, value and originalValue have same value and are cloned from value
668
- * @return {?}
669
- */
670
- function () {
671
- return new MomentDateApiObject(moment(this._value));
672
- };
673
- /**
674
- * Creates clone of this instance, value and originalValue have same value and are cloned from originalValue
675
- */
676
- /**
677
- * Creates clone of this instance, value and originalValue have same value and are cloned from originalValue
678
- * @return {?}
679
- */
680
- MomentDateApiObject.prototype.cloneOriginal = /**
681
- * Creates clone of this instance, value and originalValue have same value and are cloned from originalValue
682
- * @return {?}
683
- */
684
- function () {
685
- return new MomentDateApiObject(moment(this._originalValue));
686
- };
687
- /**
688
- * Updates originalValue, if value is not provided originalValue is set to value
689
- * @param value - Value to be set as original, or null (value will be used as value)
690
- * @returns Itself for fluent API
691
- */
692
- /**
693
- * Updates originalValue, if value is not provided originalValue is set to value
694
- * @param {?=} value - Value to be set as original, or null (value will be used as value)
695
- * @return {?} Itself for fluent API
696
- */
697
- MomentDateApiObject.prototype.updateOriginal = /**
698
- * Updates originalValue, if value is not provided originalValue is set to value
699
- * @param {?=} value - Value to be set as original, or null (value will be used as value)
700
- * @return {?} Itself for fluent API
701
- */
702
- function (value) {
703
- if (isBlank(value)) {
704
- this._originalValue = this._value;
705
- }
706
- else {
707
- this._value = this._originalValue = (/** @type {?} */ (value));
708
- }
709
- return this;
710
- };
711
- /**
712
- * Changes value to same value as originalValue
713
- * @returns Itself for fluent API
714
- */
715
- /**
716
- * Changes value to same value as originalValue
717
- * @return {?} Itself for fluent API
718
- */
719
- MomentDateApiObject.prototype.resetOriginal = /**
720
- * Changes value to same value as originalValue
721
- * @return {?} Itself for fluent API
722
- */
723
- function () {
724
- this._value = this._originalValue;
725
- return this;
726
- };
727
- return MomentDateApiObject;
728
- }());
729
- if (false) {
730
- /**
731
- * Original value that is not changed unless 'updateOriginal' is called
732
- * @type {?}
733
- * @private
734
- */
735
- MomentDateApiObject.prototype._originalValue;
736
- /**
737
- * Instance of date
738
- * @type {?}
739
- * @private
740
- */
741
- MomentDateApiObject.prototype._value;
742
- }
743
- /**
744
- * Date api using MomentJS, used for obtaining DateApi wrapper object
745
- */
746
- var MomentDateApi = /** @class */ (function () {
747
- //######################### constructor #########################
748
- function MomentDateApi(_relativeParser) {
749
- this._relativeParser = _relativeParser;
750
- }
751
- //######################### public methods #########################
752
- /**
753
- * Gets wrapping object used for manipulation
754
- * @param value - Value to be converted (parsed) and used for manipulation
755
- * @param format - Format string used for parsing string value
756
- */
757
- //######################### public methods #########################
758
- /**
759
- * Gets wrapping object used for manipulation
760
- * @param {?} value - Value to be converted (parsed) and used for manipulation
761
- * @param {?=} format - Format string used for parsing string value
762
- * @return {?}
763
- */
764
- MomentDateApi.prototype.getValue =
765
- //######################### public methods #########################
766
- /**
767
- * Gets wrapping object used for manipulation
768
- * @param {?} value - Value to be converted (parsed) and used for manipulation
769
- * @param {?=} format - Format string used for parsing string value
770
- * @return {?}
771
- */
772
- function (value, format) {
773
- return new MomentDateApiObject(this._relativeParser.parse(value), format);
774
- };
775
- /**
776
- * Gets wrapping object used for manipulation instantiated to current date and time
777
- */
778
- /**
779
- * Gets wrapping object used for manipulation instantiated to current date and time
780
- * @return {?}
781
- */
782
- MomentDateApi.prototype.now = /**
783
- * Gets wrapping object used for manipulation instantiated to current date and time
784
- * @return {?}
785
- */
786
- function () {
787
- return new MomentDateApiObject(moment());
788
- };
789
- /**
790
- * Gets format string using pseudo format
791
- * @param pseudoFormat - Pseudo format token, used for obtaining 'date' or 'time' format string
792
- */
793
- /**
794
- * Gets format string using pseudo format
795
- * @param {?} pseudoFormat - Pseudo format token, used for obtaining 'date' or 'time' format string
796
- * @return {?}
797
- */
798
- MomentDateApi.prototype.getFormat = /**
799
- * Gets format string using pseudo format
800
- * @param {?} pseudoFormat - Pseudo format token, used for obtaining 'date' or 'time' format string
801
- * @return {?}
802
- */
803
- function (pseudoFormat) {
804
- if (/^((LT|LTS|L+|l+)\s*)*$/g.test(pseudoFormat)) {
805
- return pseudoFormat.split(' ').map((/**
806
- * @param {?} itm
807
- * @return {?}
808
- */
809
- function (itm) { return moment.localeData().longDateFormat((/** @type {?} */ (itm))); })).join(' ');
810
- }
811
- return pseudoFormat;
812
- };
813
- /**
814
- * Gets information
815
- */
816
- /**
817
- * Gets information
818
- * @return {?}
819
- */
820
- MomentDateApi.prototype.weekStartsOnMonday = /**
821
- * Gets information
822
- * @return {?}
823
- */
824
- function () {
825
- return moment.localeData().firstDayOfWeek() === 1;
826
- };
827
- /**
828
- * Gets array of weekday names in short format, order of days is dependent on locale
829
- */
830
- /**
831
- * Gets array of weekday names in short format, order of days is dependent on locale
832
- * @return {?}
833
- */
834
- MomentDateApi.prototype.weekdaysShort = /**
835
- * Gets array of weekday names in short format, order of days is dependent on locale
836
- * @return {?}
837
- */
838
- function () {
839
- return moment.weekdaysShort(true);
840
- };
841
- MomentDateApi.decorators = [
842
- { type: Injectable }
843
- ];
844
- /** @nocollapse */
845
- MomentDateApi.ctorParameters = function () { return [
846
- { type: DateTimeRelativeParser }
847
- ]; };
848
- return MomentDateApi;
849
- }());
850
- export { MomentDateApi };
851
- if (false) {
852
- /**
853
- * @type {?}
854
- * @protected
855
- */
856
- MomentDateApi.prototype._relativeParser;
857
- }
858
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9tZW50RGF0ZUFwaS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3NlcnZpY2VzL21vbWVudERhdGVBcGkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFvQyxzQkFBc0IsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzFGLE9BQU8sRUFBQyxPQUFPLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEQsT0FBTyxNQUEyQixNQUFNLFFBQVEsQ0FBQzs7OztBQUtqRDs7OztJQWdDSSxpRUFBaUU7SUFDakUsNkJBQVksS0FBOEIsRUFBRSxNQUFlO1FBRXZELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFqQkQsc0JBQVcsOENBQWE7UUFMeEIseUdBQXlHO1FBRXpHOztXQUVHOzs7Ozs7O1FBQ0g7WUFFSSxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDL0IsQ0FBQzs7O09BQUE7SUFLRCxzQkFBVyxzQ0FBSztRQUhoQjs7V0FFRzs7Ozs7UUFDSDtZQUVJLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUN2QixDQUFDOzs7T0FBQTtJQVFELHNHQUFzRztJQUV0Rzs7T0FFRzs7Ozs7O0lBQ0kscUNBQU87Ozs7OztJQUFkO1FBRUksT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7T0FFRzs7Ozs7SUFDSSx1Q0FBUzs7OztJQUFoQjs7WUFFUSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUU7UUFFdEMsT0FBTyxPQUFPLElBQUksQ0FBQyxJQUFJLE9BQU8sSUFBSSxDQUFDLENBQUM7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QTVELENBQTRELEVBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDckg7UUFFRCxPQUFPLFlBQVksQ0FBQztJQUN4QixDQUFDO0lBRUQ7O09BRUc7Ozs7O0lBQ0ksMENBQWtCOzs7O0lBQXpCO1FBRUksT0FBTyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRDs7T0FFRzs7Ozs7SUFDSSxxQ0FBYTs7OztJQUFwQjtRQUVJLE9BQU8sTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDOztnQkF4REosVUFBVTs7OztnQkF0Z0JnQyxzQkFBc0I7O0lBK2pCakUsb0JBQUM7Q0FBQSxBQXpERCxJQXlEQztTQXhEWSxhQUFhOzs7Ozs7SUFHVix3Q0FBZ0UiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0RhdGVBcGksIERhdGVWYWx1ZSwgRGF0ZUFwaU9iamVjdCwgRGF0ZVRpbWVSZWxhdGl2ZVBhcnNlcn0gZnJvbSAnQGFuZ2xyL2RhdGV0aW1lJztcclxuaW1wb3J0IHtpc0JsYW5rLCBpc1ByZXNlbnR9IGZyb20gJ0Bqc2NycHQvY29tbW9uJztcclxuaW1wb3J0IG1vbWVudCwge0xvbmdEYXRlRm9ybWF0S2V5fSBmcm9tICdtb21lbnQnO1xyXG5cclxuLyoqXHJcbiAqIEluc3RhbmNlIG9mIG9iamVjdCB3cmFwcGluZyBURGF0ZSwgYWxsb3dpbmcgbWFuaXB1bGF0aW9uIHdpdGggaXRcclxuICovXHJcbmNsYXNzIE1vbWVudERhdGVBcGlPYmplY3QgaW1wbGVtZW50cyBEYXRlQXBpT2JqZWN0PG1vbWVudC5Nb21lbnQ+XHJcbntcclxuICAgIC8vIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBwcml2YXRlIGZpZWxkcyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBPcmlnaW5hbCB2YWx1ZSB0aGF0IGlzIG5vdCBjaGFuZ2VkIHVubGVzcyAndXBkYXRlT3JpZ2luYWwnIGlzIGNhbGxlZFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9vcmlnaW5hbFZhbHVlOiBtb21lbnQuTW9tZW50O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5zdGFuY2Ugb2YgZGF0ZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF92YWx1ZTogbW9tZW50Lk1vbWVudDtcclxuXHJcbiAgICAvLyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgcHVibGljIHByb3BlcnRpZXMgLSBpbXBsZW1lbnRhdGlvbiBvZiBEYXRlQXBpT2JqZWN0ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNcclxuXHJcbiAgICAvKipcclxuICAgICAqIE9yaWdpbmFsIHZhbHVlIHRoYXQgaXMgbm90IGNoYW5nZWQgdW5sZXNzICd1cGRhdGVPcmlnaW5hbCcgaXMgY2FsbGVkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgb3JpZ2luYWxWYWx1ZSgpOiBtb21lbnQuTW9tZW50XHJcbiAgICB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX29yaWdpbmFsVmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbnN0YW5jZSBvZiBkYXRlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgdmFsdWUoKTogbW9tZW50Lk1vbWVudFxyXG4gICAge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvLyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgY29uc3RydWN0b3IgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI1xyXG4gICAgY29uc3RydWN0b3IodmFsdWU6IERhdGVWYWx1ZXxtb21lbnQuTW9tZW50LCBmb3JtYXQ/OiBzdHJpbmcpXHJcbiAgICB7XHJcbiAgICAgICAgdGhpcy5fdmFsdWUgPSB0aGlzLl9vcmlnaW5hbFZhbHVlID0gbW9tZW50KHZhbHVlLCBmb3JtYXQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBwdWJsaWMgbWV0aG9kcyAtIGltcGxlbWVudGF0aW9uIG9mIERhdGVBcGlPYmplY3QgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyBpbmRpY2F0aW9uIHdoZXRoZXIgcHJvdmlkZWQgaW5zdGFuY2Ugb2YgZGF0ZSBpcyB2YWxpZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaXNWYWxpZCgpOiBib29sZWFuXHJcbiAgICB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlLmlzVmFsaWQoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgaW5kaWNhdGlvbiB3aGV0aGVyIHByb3ZpZGVkIGluc3RhbmNlIG9mIGRhdGUgaXMgd2Vla2VuZCBkYXlcclxuICAgICAqL1xyXG4gICAgcHVibGljIGlzV2Vla2VuZCgpOiBib29sZWFuXHJcbiAgICB7XHJcbiAgICAgICAgbGV0IHdlZWtkYXkgPSB0aGlzLl92YWx1ZS5pc29XZWVrZGF5KCk7XHJcblxyXG4gICAgICAgIHJldHVybiB3ZWVrZGF5ID09IDYgfHwgd2Vla2RheSA9PSA3O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRm9ybWF0cyBkYXRlIHZhbHVlXHJcbiAgICAgKiBAcGFyYW0gZm9ybWF0IC0gRm9ybWF0IHRva2VuIHVzZWQgZm9yIGNyZWF0aW5nIGZvcm1hdHRlZCBzdHJpbmdcclxuICAgICAqL1xyXG4gICAgcHVibGljIGZvcm1hdChmb3JtYXQ6IHN0cmluZyk6IHN0cmluZ1xyXG4gICAge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZS5mb3JtYXQoZm9ybWF0LnJlcGxhY2UoL3kvZywgJ1knKS5yZXBsYWNlKC9kL2csICdEJykpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXBkYXRlcyB2YWx1ZSB0byBzdGFydCBkYXRlIGFuZCB0aW1lIG9mIGN1cnJlbnQgZGVjYWRlXHJcbiAgICAgKiBAcmV0dXJucyBJdHNlbGYgZm9yIGZsdWVudCBBUElcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXJ0T2ZEZWNhZGUoKTogRGF0ZUFwaU9iamVjdDxtb21lbnQuTW9tZW50PlxyXG4gICAge1xyXG4gICAgICAgIGxldCBkaWZmID0gKHRoaXMuX3ZhbHVlLnllYXIoKSAlIDEwKTtcclxuXHJcbiAgICAgICAgdGhpcy5fdmFsdWUgPSBtb21lbnQodGhpcy5fdmFsdWUpLnN1YnRyYWN0KGRpZmYsICd5ZWFycycpLnN0YXJ0T2YoJ3llYXInKTtcclxuICAgICAgICBcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFVwZGF0ZXMgdmFsdWUgdG8gZW5kIGRhdGUgYW5kIHRpbWUgb2YgY3VycmVudCBkZWNhZGVcclxuICAgICAqIEByZXR1cm5zIEl0c2VsZiBmb3IgZmx1ZW50IEFQSVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZW5kT2ZEZWNhZGUoKTogRGF0ZUFwaU9iamVjdDxtb21lbnQuTW9tZW50PlxyXG4gICAge1xyXG4gICAgICAgIGxldCBkaWZmID0gOSAtICh0aGlzLl92YWx1ZS55ZWFyKCkgJSAxMCk7XHJcblxyXG4gICAgICAgIHRoaXMuX3ZhbHVlID0gbW9tZW50KHRoaXMuX3ZhbHVlKS5hZGQoZGlmZiwgJ3llYXJzJykuZW5kT2YoJ3llYXInKTtcclxuICAgICAgICBcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFVwZGF0ZXMgdmFsdWUgdG8gc3RhcnQgZGF0ZSBhbmQgdGltZSBvZiBjdXJyZW50IHllYXJcclxuICAgICAqIEByZXR1cm5zIEl0c2VsZiBmb3IgZmx1ZW50IEFQSVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhcnRPZlllYXIoKTogRGF0ZUFwaU9iamVjdDxtb21lbnQuTW9tZW50PlxyXG4gICAge1xyXG4gICAgICAgIHRoaXMuX3ZhbHVlID0gbW9tZW50KHRoaXMuX3ZhbHVlKS5zdGFydE9mKCd5ZWFyJyk7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXBkYXRlcyB2YWx1ZSB0byBlbmQgZGF0ZSBhbmQgdGltZSBvZiBjdXJyZW50IHllYXJcclxuICAgICAqIEByZXR1cm5zIEl0c2VsZiBmb3IgZmx1ZW50IEFQSVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZW5kT2ZZZWFyKCk6IERhdGVBcGlPYmplY3Q8bW9tZW50Lk1vbWVudD5cclxuICAgIHtcclxuICAgICAgICB0aGlzLl92YWx1ZSA9IG1vbWVudCh0aGlzLl92YWx1ZSkuZW5kT2YoJ3llYXInKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBZGQgeWVhcnMsIGlmIGNvdW50IG5vdCBzcGVjaWZpZWQgYWRkcyAxIHllYXJcclxuICAgICAqIEBwYXJhbSBjb3VudCAtIE51bWJlciBvZiB5ZWFycyBjb3VudFxyXG4gICAgICogQHJldHVybnMgSXRzZWxmIGZvciBmbHVlbnQgQVBJXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhZGRZZWFycyhjb3VudD86IG51bWJlcik6IERhdGVBcGlPYmplY3Q8bW9tZW50Lk1vbWVudD5cclxuICAgIHtcclxuICAgICAgICB0aGlzLl92YWx1ZSA9IG1vbWVudCh0aGlzLl92YWx1ZSkuYWRkKGNvdW50ID8/IDEsICd5ZWFycycpO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFN1YnRyYWN0IHllYXJzLCBpZiBjb3VudCBub3Qgc3BlY2lmaWVkIHN1YnRyYWN0IDEgeWVhclxyXG4gICAgICogQHBhcmFtIGNvdW50IC0gTnVtYmVyIG9mIHllYXJzIGNvdW50XHJcbiAgICAgKiBAcmV0dXJucyBJdHNlbGYgZm9yIGZsdWVudCBBUElcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN1YnRyYWN0WWVhcnMoY291bnQ/OiBudW1iZXIpOiBEYXRlQXBpT2JqZWN0PG1vbWVudC5Nb21lbnQ+XHJcbiAgICB7XHJcbiAgICAgICAgdGhpcy5fdmFsdWUgPSBtb21lbnQodGhpcy5fdmFsdWUpLnN1YnRyYWN0KGNvdW50ID8/IDEsICd5ZWFycycpO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFVwZGF0ZXMgdmFsdWUgdG8gc3RhcnQgZGF0ZSBhbmQgdGltZSBvZiBjdXJyZW50IG1vbnRoXHJcbiAgICAgKiBAcmV0dXJucyBJdHNlbGYgZm9yIGZsdWVudCBBUElcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXJ0T2ZNb250aCgpOiBEYXRlQXBpT2JqZWN0PG1vbWVudC5Nb21lbnQ+XHJcbiAgICB7XHJcbiAgICAgICAgdGhpcy5fdmFsdWUgPSBtb21lbnQodGhpcy5fdmFsdWUpLnN0YXJ0T2YoJ21vbnRoJyk7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXBkYXRlcyB2YWx1ZSB0byBlbmQgZGF0ZSBhbmQgdGltZSBvZiBjdXJyZW50IG1vbnRoXHJcbiAgICAgKiBAcmV0dXJucyBJdHNlbGYgZm9yIGZsdWVudCBBUElcclxuICAgICAqL1xyXG4gICAgcHVibGljIGVuZE9mTW9udGgoKTogRGF0ZUFwaU9iamVjdDxtb21lbnQuTW9tZW50PlxyXG4gICAge1xyXG4gICAgICAgIHRoaXMuX3ZhbHVlID0gbW9tZW50KHRoaXMuX3ZhbHVlKS5lbmRPZignbW9udGgnKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBZGQgbW9udGhzLCBpZiBjb3VudCBub3Qgc3BlY2lmaWVkIGFkZHMgMSBtb250aFxyXG4gICAgICogQHBhcmFtIGNvdW50IC0gTnVtYmVyIG9mIG1vbnRocyBjb3VudFxyXG4gICAgICogQHJldHVybnMgSXRzZWxmIGZvciBmbHVlbnQgQVBJXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhZGRNb250aHMoY291bnQ/OiBudW1iZXIpOiBEYXRlQXBpT2JqZWN0PG1vbWVudC5Nb21lbnQ+XHJcbiAgICB7XHJcbiAgICAgICAgdGhpcy5fdmFsdWUgPSBtb21lbnQodGhpcy5fdmFsdWUpLmFkZChjb3VudCA/PyAxLCAnbW9udGhzJyk7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU3VidHJhY3QgbW9udGhzLCBpZiBjb3VudCBub3Qgc3BlY2lmaWVkIHN1YnRyYWN0IDEgbW9udGhcclxuICAgICAqIEBwYXJhbSBjb3VudCAtIE51bWJlciBvZiBtb250aHMgY291bnRcclxuICAgICAqIEByZXR1cm5zIEl0c2VsZiBmb3IgZmx1ZW50IEFQSVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3VidHJhY3RNb250aHMoY291bnQ/OiBudW1iZXIpOiBEYXRlQXBpT2JqZWN0PG1vbWVudC5Nb21lbnQ+XHJcbiAgICB7XHJcbiAgICAgICAgdGhpcy5fdmFsdWUgPSBtb21lbnQodGhpcy5fdmFsdWUpLnN1YnRyYWN0KGNvdW50ID8/IDEsICdtb250aHMnKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVcGRhdGVzIHZhbHVlIHRvIHN0YXJ0IGRhdGUgYW5kIHRpbWUgb2YgY3VycmVudCB3ZWVrXHJcbiAgICAgKiBAcmV0dXJucyBJdHNlbGYgZm9yIGZsdWVudCBBUElcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXJ0T2ZXZWVrKCk6IERhdGVBcGlPYmplY3Q8bW9tZW50Lk1vbWVudD5cclxuICAgIHtcclxuICAgICAgICB0aGlzLl92YWx1ZSA9IG1vbWVudCh0aGlzLl92YWx1ZSkuc3RhcnRPZignd2VlaycpO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFVwZGF0ZXMgdmFsdWUgdG8gZW5kIGRhdGUgYW5kIHRpbWUgb2YgY3VycmVudCB3ZWVrXHJcbiAgICAgKiBAcmV0dXJucyBJdHNlbGYgZm9yIGZsdWVudCBBUElcclxuICAgICAqL1xyXG4gICAgcHVibGljIGVuZE9mV2VlaygpOiBEYXRlQXBpT2JqZWN0PG1vbWVudC5Nb21lbnQ+XHJcbiAgICB7XHJcbiAgICAgICAgdGhpcy5fdmFsdWUgPSBtb21lbnQodGhpcy5fdmFsdWUpLmVuZE9mKCd3ZWVrJyk7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWRkIHdlZWtzLCBpZiBjb3VudCBub3Qgc3BlY2lmaWVkIGFkZHMgMSB3ZWVrXHJcbiAgICAgKiBAcGFyYW0gY291bnQgLSBOdW1iZXIgb2Ygd2Vla3MgY291bnRcclxuICAgICAqIEByZXR1cm5zIEl0c2VsZiBmb3IgZmx1ZW50IEFQSVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWRkV2Vla3MoY291bnQ/OiBudW1iZXIpOiBEYXRlQXBpT2JqZWN0PG1vbWVudC5Nb21lbnQ+XHJcbiAgICB7XHJcbiAgICAgICAgdGhpcy5fdmFsdWUgPSBtb21lbnQodGhpcy5fdmFsdWUpLmFkZChjb3VudCA/PyAxLCAnd2Vla3MnKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTdWJ0cmFjdCB3ZWVrcywgaWYgY291bnQgbm90IHNwZWNpZmllZCBzdWJ0cmFjdCAxIHdlZWtcclxuICAgICAqIEBwYXJhbSBjb3VudCAtIE51bWJlciBvZiB3ZWVrcyBjb3VudFxyXG4gICAgICogQHJldHVybnMgSXRzZWxmIGZvciBmbHVlbnQgQVBJXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdWJ0cmFjdFdlZWtzKGNvdW50PzogbnVtYmVyKTogRGF0ZUFwaU9iamVjdDxtb21lbnQuTW9tZW50PlxyXG4gICAge1xyXG4gICAgICAgIHRoaXMuX3ZhbHVlID0gbW9tZW50KHRoaXMuX3ZhbHVlKS5zdWJ0cmFjdChjb3VudCA/PyAxLCAnd2Vla3MnKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVcGRhdGVzIHZhbHVlIHRvIHN0YXJ0IGRhdGUgYW5kIHRpbWUgb2YgY3VycmVudCBkYXlcclxuICAgICAqIEByZXR1cm5zIEl0c2VsZiBmb3IgZmx1ZW50IEFQSVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhcnRPZkRheSgpOiBEYXRlQXBpT2JqZWN0PG1vbWVudC5Nb21lbnQ+XHJcbiAgICB7XHJcbiAgICAgICAgdGhpcy5fdmFsdWUgPSBtb21lbnQodGhpcy5fdmFsdWUpLnN0YXJ0T2YoJ2RheScpO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFVwZGF0ZXMgdmFsdWUgdG8gZW5kIGRhdGUgYW5kIHRpbWUgb2YgY3VycmVudCBkYXlcclxuICAgICAqIEByZXR1cm5zIEl0c2VsZiBmb3IgZmx1ZW50IEFQSVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZW5kT2ZEYXkoKTogRGF0ZUFwaU9iamVjdDxtb21lbnQuTW9tZW50PlxyXG4gICAge1xyXG4gICAgICAgIHRoaXMuX3ZhbHVlID0gbW9tZW50KHRoaXMuX3ZhbHVlKS5lbmRPZignZGF5Jyk7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWRkIGRheXMsIGlmIGNvdW50IG5vdCBzcGVjaWZpZWQgYWRkcyAxIGRheVxyXG4gICAgICogQHBhcmFtIGNvdW50IC0gTnVtYmVyIG9mIGRheXMgY291bnRcclxuICAgICAqIEByZXR1cm5zIEl0c2VsZiBmb3IgZmx1ZW50IEFQSVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWRkRGF5cyhjb3VudD86IG51bWJlcik6IERhdGVBcGlPYmplY3Q8bW9tZW50Lk1vbWVudD5cclxuICAgIHtcclxuICAgICAgICB0aGlzLl92YWx1ZSA9IG1vbWVudCh0aGlzLl92YWx1ZSkuYWRkKGNvdW50ID8/IDEsICdkYXlzJyk7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU3VidHJhY3QgZGF5cywgaWYgY291bnQgbm90IHNwZWNpZmllZCBzdWJ0cmFjdCAxIGRheVxyXG4gICAgICogQHBhcmFtIGNvdW50IC0gTnVtYmVyIG9mIGRheXMgY291bnRcclxuICAgICAqIEByZXR1cm5zIEl0c2VsZiBmb3IgZmx1ZW50IEFQSVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3VidHJhY3REYXlzKGNvdW50PzogbnVtYmVyKTogRGF0ZUFwaU9iamVjdDxtb21lbnQuTW9tZW50PlxyXG4gICAge1xyXG4gICAgICAgIHRoaXMuX3ZhbHVlID0gbW9tZW50KHRoaXMuX3ZhbHVlKS5zdWJ0cmFjdChjb3VudCA/PyAxLCAnZGF5cycpO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgbnVtYmVyIG9mIGRheXMgaW4gbW9udGhcclxuICAgICAqL1xyXG4gICAgcHVibGljIGRheXNJbk1vbnRoKCk6IG51bWJlclxyXG4gICAge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZS5kYXlzSW5Nb250aCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB5ZWFyXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB5ZWFyKCk6IG51bWJlcjtcclxuICAgIC8qKlxyXG4gICAgICogU2V0cyB5ZWFyXHJcbiAgICAgKiBAcGFyYW0geWVhciAtIFllYXIgdG8gYmUgc2V0XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB5ZWFyKHllYXI6IG51bWJlcik6IERhdGVBcGlPYmplY3Q8bW9tZW50Lk1vbWVudD47XHJcbiAgICAvKipcclxuICAgICAqIEdldHMgb3Igc2V0cyB5ZWFyXHJcbiAgICAgKiBAcGFyYW0geWVhciAtIElmIHNwZWNpZmllZCwgc2V0cyB5ZWFyXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB5ZWFyKHllYXI/OiBudW1iZXIpOiBEYXRlQXBpT2JqZWN0PG1vbWVudC5Nb21lbnQ+fG51bWJlclxyXG4gICAge1xyXG4gICAgICAgIGlmKGlzUHJlc2VudCh5ZWFyKSlcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gbW9tZW50KHRoaXMuX3ZhbHVlKS55ZWFyKHllYXIhKTtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlLnllYXIoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgbW9udGhcclxuICAgICAqL1xyXG4gICAgcHVibGljIG1vbnRoKCk6IG51bWJlclxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXRzIG1vbnRoXHJcbiAgICAgKiBAcGFyYW0gbW9udGggLSBNb250aCB0byBiZSBzZXRcclxuICAgICAqL1xyXG4gICAgcHVibGljIG1vbnRoKG1vbnRoOiBudW1iZXIpOiBEYXRlQXBpT2JqZWN0PG1vbWVudC5Nb21lbnQ+XHJcbiAgICAvKipcclxuICAgICAqIEdldHMgb3Igc2V0cyBtb250aFxyXG4gICAgICogQHBhcmFtIG1vbnRoIC0gSWYgc3BlY2lmaWVkLCBzZXRzIG1vbnRoXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBtb250aChtb250aD86IG51bWJlcik6IERhdGVBcGlPYmplY3Q8bW9tZW50Lk1vbWVudD58bnVtYmVyXHJcbiAgICB7XHJcbiAgICAgICAgaWYoaXNQcmVzZW50KG1vbnRoKSlcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gbW9tZW50KHRoaXMuX3ZhbHVlKS5tb250aChtb250aCEpO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWUubW9udGgoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgZGF5IG9mIG1vbnRoIG9uZSBiYXNlZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZGF5T2ZNb250aCgpOiBudW1iZXI7XHJcbiAgICAvKipcclxuICAgICAqIFNldHMgZGF5IG9mIG1vbnRoIG9uZSBiYXNlZFxyXG4gICAgICogQHBhcmFtIGRheSAtIERheSBvZiBtb250aCB0byBiZSBzZXRcclxuICAgICAqL1xyXG4gICAgcHVibGljIGRheU9mTW9udGgoZGF5OiBudW1iZXIpOiBEYXRlQXBpT2JqZWN0PG1vbWVudC5Nb21lbnQ+O1xyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIG9yIHNldHMgZGF5IG9mIG1vbnRoIG9uZSBiYXNlZFxyXG4gICAgICogQHBhcmFtIGRheSAtIElmIHNwZWNpZmllZCwgc2V0cyBkYXkgb2YgbW9udGhcclxuICAgICAqL1xyXG4gICAgcHVibGljIGRheU9mTW9udGgoZGF5PzogbnVtYmVyKTogRGF0ZUFwaU9iamVjdDxtb21lbnQuTW9tZW50PnxudW1iZXJcclxuICAgIHtcclxuICAgICAgICBpZihpc1ByZXNlbnQoZGF5KSlcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gbW9tZW50KHRoaXMuX3ZhbHVlKS5kYXRlKGRheSEpO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWUuZGF0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyBkYXkgb2Ygd2VlayB6ZXJvIGJhc2VkLCBmaXJzdCBpcyBtb25kYXlcclxuICAgICAqL1xyXG4gICAgcHVibGljIGRheU9mV2VlaygpOiBudW1iZXI7XHJcbiAgICAvKipcclxuICAgICAqIFNldHMgZGF5IG9mIHdlZWsgemVybyBiYXNlZCwgZmlyc3QgaXMgbW9uZGF5XHJcbiAgICAgKiBAcGFyYW0gZGF5IC0gRGF5IG9mIHdlZWsgdG8gYmUgc2V0XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBkYXlPZldlZWsoZGF5OiBudW1iZXIpOiBEYXRlQXBpT2JqZWN0PG1vbWVudC5Nb21lbnQ+O1xyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIG9yIHNldHMgZGF5IG9mIHdlZWsgemVybyBiYXNlZCwgZmlyc3QgaXMgbW9uZGF5XHJcbiAgICAgKiBAcGFyYW0gZGF5IC0gSWYgc3BlY2lmaWVkLCBzZXRzIGRheSBvZiB3ZWVrXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBkYXlPZldlZWsoZGF5PzogbnVtYmVyKTogbnVtYmVyfERhdGVBcGlPYmplY3Q8bW9tZW50Lk1vbWVudD5cclxuICAgIHtcclxuICAgICAgICBpZihpc1ByZXNlbnQoZGF5KSlcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gbW9tZW50KHRoaXMuX3ZhbHVlKS53ZWVrZGF5KGRheSEpO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWUud2Vla2RheSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyBpbmRpY2F0aW9uIHdoZXRoZXIgY3VycmVudCB2YWx1ZSBpcyBiZWZvcmUgJ2RhdGUnXHJcbiAgICAgKiBAcGFyYW0gZGF0ZSAtIERhdGUgd2hpY2ggaXMgdGhpcyBkYXRlIGNvbXBhcmVkIHRvXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBpc0JlZm9yZShkYXRlOiBtb21lbnQuTW9tZW50KTogYm9vbGVhblxyXG4gICAge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZS5pc0JlZm9yZShkYXRlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgaW5kaWNhdGlvbiB3aGV0aGVyIGN1cnJlbnQgdmFsdWUgaXMgYWZ0ZXIgJ2RhdGUnXHJcbiAgICAgKiBAcGFyYW0gZGF0ZSAtIERhdGUgd2hpY2ggaXMgdGhpcyBkYXRlIGNvbXBhcmVkIHRvXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBpc0FmdGVyKGRhdGU6IG1vbWVudC5Nb21lbnQpOiBib29sZWFuXHJcbiAgICB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlLmlzQWZ0ZXIoZGF0ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIG51bWJlciBvZiBkYXlzIGJldHdlZW4gdGhpcyBhbmQgcHJvdmlkZWQgZGF0ZVxyXG4gICAgICogQHBhcmFtIGRhdGUgLSBEYXRlIHdoaWNoIGlzIHVzZWQgZm9yIGNvbXB1dGF0aW9uIG9mIGRpZmYgYWdhaW5zdFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZGlmZkRheXMoZGF0ZTogbW9tZW50Lk1vbWVudCk6IG51bWJlclxyXG4gICAge1xyXG4gICAgICAgIHJldHVybiBtb21lbnQodGhpcy5fdmFsdWUpLnN0YXJ0T2YoJ2RheScpLmRpZmYobW9tZW50KGRhdGUpLnN0YXJ0T2YoJ2RheScpLCAnZGF5cycpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29tcGFyZXMgd2hldGhlciB0aGlzIGRhdGUgaXMgc2FtZSB3ZWVrIGFzIHByb3ZpZGVkIGRhdGVcclxuICAgICAqIEBwYXJhbSBkYXRlIC0gRGF0ZSB3aGljaCBpcyB1c2VkIGZvciBjb21wYXJpc29uIG9mIHNhbWUgd2Vla1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaXNTYW1lV2VlayhkYXRlOiBtb21lbnQuTW9tZW50KTogYm9vbGVhblxyXG4gICAge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZS5pc1NhbWUoZGF0ZSwgJ3dlZWsnKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENvbXBhcmVzIHdoZXRoZXIgdGhpcyBkYXRlIGlzIHNhbWUgZGVjYWRlIGFzIHByb3ZpZGVkIGRhdGVcclxuICAgICAqIEBwYXJhbSBkYXRlIC0gRGF0ZSB3aGljaCBpcyB1c2VkIGZvciBjb21wYXJpc29uIG9mIHNhbWUgZGVjYWRlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBpc1NhbWVEZWNhZGUoZGF0ZTogbW9tZW50Lk1vbWVudCk6IGJvb2xlYW5cclxuICAgIHtcclxuICAgICAgICBsZXQgeWVhciA9IHRoaXMuX3ZhbHVlLnllYXIoKTtcclxuICAgICAgICBsZXQgc3RhcnQgPSB5ZWFyIC0gKHllYXIgJSAxMCk7XHJcbiAgICAgICAgbGV0IGVuZCA9IHN0YXJ0ICsgMTA7XHJcblxyXG4gICAgICAgIHJldHVybiBkYXRlLnllYXIoKSA+PSBzdGFydCAmJiBkYXRlLnllYXIoKSA8IGVuZDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENvbXBhcmVzIHdoZXRoZXIgdGhpcyBkYXRlIGlzIHNhbWUgeWVhciBhcyBwcm92aWRlZCBkYXRlXHJcbiAgICAgKiBAcGFyYW0gZGF0ZSAtIERhdGUgd2hpY2ggaXMgdXNlZCBmb3IgY29tcGFyaXNvbiBvZiBzYW1lIHllYXJcclxuICAgICAqL1xyXG4gICAgcHVibGljIGlzU2FtZVllYXIoZGF0ZTogbW9tZW50Lk1vbWVudCk6IGJvb2xlYW5cclxuICAgIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWUuaXNTYW1lKGRhdGUsICd5ZWFyJyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb21wYXJlcyB3aGV0aGVyIHRoaXMgZGF0ZSBpcyBzYW1lIG1vbnRoIGFzIHByb3ZpZGVkIGRhdGVcclxuICAgICAqIEBwYXJhbSBkYXRlIC0gRGF0ZSB3aGljaCBpcyB1c2VkIGZvciBjb21wYXJpc29uIG9mIHNhbWUgbW9udGhcclxuICAgICAqL1xyXG4gICAgcHVibGljIGlzU2FtZU1vbnRoKGRhdGU6IG1vbWVudC5Nb21lbnQpOiBib29sZWFuXHJcbiAgICB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlLmlzU2FtZShkYXRlLCAnbW9udGgnKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENvbXBhcmVzIHdoZXRoZXIgdGhpcyBkYXRlIGlzIHNhbWUgZGF5IGFzIHByb3ZpZGVkIGRhdGVcclxuICAgICAqIEBwYXJhbSBkYXRlIC0gRGF0ZSB3aGljaCBpcyB1c2VkIGZvciBjb21wYXJpc29uIG9mIHNhbWUgZGF5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBpc1NhbWVEYXkoZGF0ZTogbW9tZW50Lk1vbWVudCk6IGJvb2xlYW5cclxuICAgIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWUuaXNTYW1lKGRhdGUsICdkYXknKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgY2xvbmUgb2YgdGhpcyBpbnN0YW5jZSwgdmFsdWUgYW5kIG9yaWdpbmFsVmFsdWUgaGF2ZSBzYW1lIHZhbHVlIGFuZCBhcmUgY2xvbmVkIGZyb20gdmFsdWVcclxuICAgICAqL1xyXG4gICAgcHVibGljIGNsb25lKCk6IERhdGVBcGlPYmplY3Q8bW9tZW50Lk1vbWVudD5cclxuICAgIHtcclxuICAgICAgICByZXR1cm4gbmV3IE1vbWVudERhdGVBcGlPYmplY3QobW9tZW50KHRoaXMuX3ZhbHVlKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhdGVzIGNsb25lIG9mIHRoaXMgaW5zdGFuY2UsIHZhbHVlIGFuZCBvcmlnaW5hbFZhbHVlIGhhdmUgc2FtZSB2YWx1ZSBhbmQgYXJlIGNsb25lZCBmcm9tIG9yaWdpbmFsVmFsdWVcclxuICAgICAqL1xyXG4gICAgcHVibGljIGNsb25lT3JpZ2luYWwoKTogRGF0ZUFwaU9iamVjdDxtb21lbnQuTW9tZW50PlxyXG4gICAge1xyXG4gICAgICAgIHJldHVybiBuZXcgTW9tZW50RGF0ZUFwaU9iamVjdChtb21lbnQodGhpcy5fb3JpZ2luYWxWYWx1ZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXBkYXRlcyBvcmlnaW5hbFZhbHVlLCBpZiB2YWx1ZSBpcyBub3QgcHJvdmlkZWQgb3JpZ2luYWxWYWx1ZSBpcyBzZXQgdG8gdmFsdWVcclxuICAgICAqIEBwYXJhbSB2YWx1ZSAtIFZhbHVlIHRvIGJlIHNldCBhcyBvcmlnaW5hbCwgb3IgbnVsbCAodmFsdWUgd2lsbCBiZSB1c2VkIGFzIHZhbHVlKVxyXG4gICAgICogQHJldHVybnMgSXRzZWxmIGZvciBmbHVlbnQgQVBJXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB1cGRhdGVPcmlnaW5hbCh2YWx1ZT86IG1vbWVudC5Nb21lbnQpOiBEYXRlQXBpT2JqZWN0PG1vbWVudC5Nb21lbnQ+XHJcbiAgICB7XHJcbiAgICAgICAgaWYoaXNCbGFuayh2YWx1ZSkpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0aGlzLl9vcmlnaW5hbFZhbHVlID0gdGhpcy5fdmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2VcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5fb3JpZ2luYWxWYWx1ZSA9IHZhbHVlITtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2hhbmdlcyB2YWx1ZSB0byBzYW1lIHZhbHVlIGFzIG9yaWdpbmFsVmFsdWVcclxuICAgICAqIEByZXR1cm5zIEl0c2VsZiBmb3IgZmx1ZW50IEFQSVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcmVzZXRPcmlnaW5hbCgpOiBEYXRlQXBpT2JqZWN0PG1vbWVudC5Nb21lbnQ+XHJcbiAgICB7XHJcbiAgICAgICAgdGhpcy5fdmFsdWUgPSB0aGlzLl9vcmlnaW5hbFZhbHVlO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIERhdGUgYXBpIHVzaW5nIE1vbWVudEpTLCB1c2VkIGZvciBvYnRhaW5pbmcgRGF0ZUFwaSB3cmFwcGVyIG9iamVjdFxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgTW9tZW50RGF0ZUFwaSBpbXBsZW1lbnRzIERhdGVBcGk8bW9tZW50Lk1vbWVudD5cclxue1xyXG4gICAgLy8jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIGNvbnN0cnVjdG9yICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNcclxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfcmVsYXRpdmVQYXJzZXI6IERhdGVUaW1lUmVsYXRpdmVQYXJzZXI8bW9tZW50Lk1vbWVudD4pXHJcbiAgICB7XHJcbiAgICB9XHJcblxyXG4gICAgLy8jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIHB1YmxpYyBtZXRob2RzICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNcclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgd3JhcHBpbmcgb2JqZWN0IHVzZWQgZm9yIG1hbmlwdWxhdGlvblxyXG4gICAgICogQHBhcmFtIHZhbHVlIC0gVmFsdWUgdG8gYmUgY29udmVydGVkIChwYXJzZWQpIGFuZCB1c2VkIGZvciBtYW5pcHVsYXRpb25cclxuICAgICAqIEBwYXJhbSBmb3JtYXQgLSBGb3JtYXQgc3RyaW5nIHVzZWQgZm9yIHBhcnNpbmcgc3RyaW5nIHZhbHVlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXRWYWx1ZSh2YWx1ZTogRGF0ZVZhbHVlfG1vbWVudC5Nb21lbnQsIGZvcm1hdD86IHN0cmluZyk6IERhdGVBcGlPYmplY3Q8bW9tZW50Lk1vbWVudD5cclxuICAgIHtcclxuICAgICAgICByZXR1cm4gbmV3IE1vbWVudERhdGVBcGlPYmplY3QodGhpcy5fcmVsYXRpdmVQYXJzZXIucGFyc2UodmFsdWUpLCBmb3JtYXQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB3cmFwcGluZyBvYmplY3QgdXNlZCBmb3IgbWFuaXB1bGF0aW9uIGluc3RhbnRpYXRlZCB0byBjdXJyZW50IGRhdGUgYW5kIHRpbWVcclxuICAgICAqL1xyXG4gICAgcHVibGljIG5vdygpOiBEYXRlQXBpT2JqZWN0PG1vbWVudC5Nb21lbnQ+XHJcbiAgICB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBNb21lbnREYXRlQXBpT2JqZWN0KG1vbWVudCgpKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgZm9ybWF0IHN0cmluZyB1c2luZyBwc2V1ZG8gZm9ybWF0XHJcbiAgICAgKiBAcGFyYW0gcHNldWRvRm9ybWF0IC0gUHNldWRvIGZvcm1hdCB0b2tlbiwgdXNlZCBmb3Igb2J0YWluaW5nICdkYXRlJyBvciAndGltZScgZm9ybWF0IHN0cmluZ1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0Rm9ybWF0KHBzZXVkb0Zvcm1hdDogc3RyaW5nKTogc3RyaW5nXHJcbiAgICB7XHJcbiAgICAgICAgaWYoL14oKExUfExUU3xMK3xsKylcXHMqKSokL2cudGVzdChwc2V1ZG9Gb3JtYXQpKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgcmV0dXJuIHBzZXVkb0Zvcm1hdC5zcGxpdCgnICcpLm1hcChpdG0gPT4gbW9tZW50LmxvY2FsZURhdGEoKS5sb25nRGF0ZUZvcm1hdChpdG0gYXMgTG9uZ0RhdGVGb3JtYXRLZXkpKS5qb2luKCcgJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gcHNldWRvRm9ybWF0O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyBpbmZvcm1hdGlvbiBcclxuICAgICAqL1xyXG4gICAgcHVibGljIHdlZWtTdGFydHNPbk1vbmRheSgpOiBib29sZWFuXHJcbiAgICB7XHJcbiAgICAgICAgcmV0dXJuIG1vbWVudC5sb2NhbGVEYXRhKCkuZmlyc3REYXlPZldlZWsoKSA9PT0gMTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgYXJyYXkgb2Ygd2Vla2RheSBuYW1lcyBpbiBzaG9ydCBmb3JtYXQsIG9yZGVyIG9mIGRheXMgaXMgZGVwZW5kZW50IG9uIGxvY2FsZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgd2Vla2RheXNTaG9ydCgpOiBzdHJpbmdbXVxyXG4gICAge1xyXG4gICAgICAgIHJldHVybiBtb21lbnQud2Vla2RheXNTaG9ydCh0cnVlKTtcclxuICAgIH1cclxufSJdfQ==