ngx-bootstrap 5.4.0 → 5.6.2

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 (440) hide show
  1. package/CHANGELOG.md +138 -99
  2. package/accordion/bundles/ngx-bootstrap-accordion.umd.js +71 -2
  3. package/accordion/bundles/ngx-bootstrap-accordion.umd.js.map +1 -1
  4. package/accordion/bundles/ngx-bootstrap-accordion.umd.min.js +1 -1
  5. package/accordion/bundles/ngx-bootstrap-accordion.umd.min.js.map +1 -1
  6. package/accordion/fesm2015/ngx-bootstrap-accordion.js +79 -0
  7. package/accordion/fesm2015/ngx-bootstrap-accordion.js.map +1 -1
  8. package/accordion/fesm5/ngx-bootstrap-accordion.js +80 -1
  9. package/accordion/fesm5/ngx-bootstrap-accordion.js.map +1 -1
  10. package/accordion/package.json +2 -2
  11. package/alert/bundles/ngx-bootstrap-alert.umd.js +224 -2
  12. package/alert/bundles/ngx-bootstrap-alert.umd.js.map +1 -1
  13. package/alert/bundles/ngx-bootstrap-alert.umd.min.js +15 -1
  14. package/alert/bundles/ngx-bootstrap-alert.umd.min.js.map +1 -1
  15. package/alert/fesm2015/ngx-bootstrap-alert.js +71 -0
  16. package/alert/fesm2015/ngx-bootstrap-alert.js.map +1 -1
  17. package/alert/fesm5/ngx-bootstrap-alert.js +72 -1
  18. package/alert/fesm5/ngx-bootstrap-alert.js.map +1 -1
  19. package/alert/package.json +2 -2
  20. package/buttons/bundles/ngx-bootstrap-buttons.umd.js +208 -85
  21. package/buttons/bundles/ngx-bootstrap-buttons.umd.js.map +1 -1
  22. package/buttons/bundles/ngx-bootstrap-buttons.umd.min.js +1 -1
  23. package/buttons/bundles/ngx-bootstrap-buttons.umd.min.js.map +1 -1
  24. package/buttons/button-radio-group.directive.d.ts +4 -1
  25. package/buttons/esm2015/button-radio-group.directive.js +26 -2
  26. package/buttons/esm5/button-radio-group.directive.js +30 -2
  27. package/buttons/fesm2015/ngx-bootstrap-buttons.js +194 -65
  28. package/buttons/fesm2015/ngx-bootstrap-buttons.js.map +1 -1
  29. package/buttons/fesm5/ngx-bootstrap-buttons.js +216 -83
  30. package/buttons/fesm5/ngx-bootstrap-buttons.js.map +1 -1
  31. package/buttons/ngx-bootstrap-buttons.metadata.json +1 -1
  32. package/buttons/package.json +2 -2
  33. package/carousel/bundles/ngx-bootstrap-carousel.umd.js +295 -4
  34. package/carousel/bundles/ngx-bootstrap-carousel.umd.js.map +1 -1
  35. package/carousel/bundles/ngx-bootstrap-carousel.umd.min.js +15 -1
  36. package/carousel/bundles/ngx-bootstrap-carousel.umd.min.js.map +1 -1
  37. package/carousel/carousel.component.d.ts +2 -0
  38. package/carousel/esm2015/carousel.component.js +15 -2
  39. package/carousel/esm2015/slide.component.js +21 -2
  40. package/carousel/esm5/carousel.component.js +15 -2
  41. package/carousel/esm5/slide.component.js +6 -2
  42. package/carousel/fesm2015/ngx-bootstrap-carousel.js +169 -2
  43. package/carousel/fesm2015/ngx-bootstrap-carousel.js.map +1 -1
  44. package/carousel/fesm5/ngx-bootstrap-carousel.js +156 -4
  45. package/carousel/fesm5/ngx-bootstrap-carousel.js.map +1 -1
  46. package/carousel/ngx-bootstrap-carousel.metadata.json +1 -1
  47. package/carousel/package.json +2 -2
  48. package/carousel/slide.component.d.ts +1 -0
  49. package/chronos/bundles/ngx-bootstrap-chronos.umd.js +11172 -10061
  50. package/chronos/bundles/ngx-bootstrap-chronos.umd.js.map +1 -1
  51. package/chronos/bundles/ngx-bootstrap-chronos.umd.min.js +1 -1
  52. package/chronos/bundles/ngx-bootstrap-chronos.umd.min.js.map +1 -1
  53. package/chronos/esm2015/format/format.js +1 -1
  54. package/chronos/esm2015/i18n/ka.js +108 -0
  55. package/chronos/esm2015/i18n/kk.js +89 -0
  56. package/chronos/esm2015/i18n/sq.js +62 -0
  57. package/chronos/esm2015/i18n/th-be.js +85 -0
  58. package/chronos/esm2015/index.js +2 -2
  59. package/chronos/esm2015/locale/locale.class.js +16 -2
  60. package/chronos/esm2015/ngx-bootstrap-chronos.js +2 -2
  61. package/chronos/esm2015/public_api.js +5 -1
  62. package/chronos/esm2015/units/year.js +4 -1
  63. package/chronos/esm5/format/format.js +1 -1
  64. package/chronos/esm5/i18n/ka.js +108 -0
  65. package/chronos/esm5/i18n/kk.js +89 -0
  66. package/chronos/esm5/i18n/sq.js +62 -0
  67. package/chronos/esm5/i18n/th-be.js +86 -0
  68. package/chronos/esm5/index.js +2 -2
  69. package/chronos/esm5/locale/locale.class.js +22 -2
  70. package/chronos/esm5/ngx-bootstrap-chronos.js +2 -2
  71. package/chronos/esm5/public_api.js +5 -1
  72. package/chronos/esm5/units/year.js +4 -1
  73. package/chronos/fesm2015/ngx-bootstrap-chronos.js +1117 -13
  74. package/chronos/fesm2015/ngx-bootstrap-chronos.js.map +1 -1
  75. package/chronos/fesm5/ngx-bootstrap-chronos.js +1130 -13
  76. package/chronos/fesm5/ngx-bootstrap-chronos.js.map +1 -1
  77. package/chronos/i18n/ka.d.ts +2 -0
  78. package/chronos/i18n/kk.d.ts +2 -0
  79. package/chronos/i18n/sq.d.ts +2 -0
  80. package/chronos/i18n/th-be.d.ts +2 -0
  81. package/chronos/locale/locale.class.d.ts +2 -0
  82. package/chronos/ngx-bootstrap-chronos.metadata.json +1 -1
  83. package/chronos/package.json +2 -2
  84. package/chronos/public_api.d.ts +4 -0
  85. package/collapse/bundles/ngx-bootstrap-collapse.umd.js +100 -2
  86. package/collapse/bundles/ngx-bootstrap-collapse.umd.js.map +1 -1
  87. package/collapse/bundles/ngx-bootstrap-collapse.umd.min.js +1 -1
  88. package/collapse/bundles/ngx-bootstrap-collapse.umd.min.js.map +1 -1
  89. package/collapse/collapse.directive.d.ts +1 -0
  90. package/collapse/esm2015/collapse.directive.js +14 -1
  91. package/collapse/esm5/collapse.directive.js +14 -1
  92. package/collapse/fesm2015/ngx-bootstrap-collapse.js +108 -0
  93. package/collapse/fesm2015/ngx-bootstrap-collapse.js.map +1 -1
  94. package/collapse/fesm5/ngx-bootstrap-collapse.js +109 -1
  95. package/collapse/fesm5/ngx-bootstrap-collapse.js.map +1 -1
  96. package/collapse/ngx-bootstrap-collapse.metadata.json +1 -1
  97. package/collapse/package.json +2 -2
  98. package/component-loader/bundles/ngx-bootstrap-component-loader.umd.js +169 -2
  99. package/component-loader/bundles/ngx-bootstrap-component-loader.umd.js.map +1 -1
  100. package/component-loader/bundles/ngx-bootstrap-component-loader.umd.min.js +1 -1
  101. package/component-loader/bundles/ngx-bootstrap-component-loader.umd.min.js.map +1 -1
  102. package/component-loader/fesm2015/ngx-bootstrap-component-loader.js +177 -0
  103. package/component-loader/fesm2015/ngx-bootstrap-component-loader.js.map +1 -1
  104. package/component-loader/fesm5/ngx-bootstrap-component-loader.js +178 -1
  105. package/component-loader/fesm5/ngx-bootstrap-component-loader.js.map +1 -1
  106. package/component-loader/package.json +2 -2
  107. package/datepicker/base/bs-datepicker-container.d.ts +4 -1
  108. package/datepicker/bs-datepicker-inline.component.d.ts +4 -0
  109. package/datepicker/bs-datepicker-input.directive.d.ts +1 -0
  110. package/datepicker/bs-datepicker.component.d.ts +12 -3
  111. package/datepicker/bs-datepicker.config.d.ts +26 -0
  112. package/datepicker/bs-datepicker.css +19 -1
  113. package/datepicker/bs-datepicker.css.map +3 -3
  114. package/datepicker/bs-datepicker.scss +0 -1
  115. package/datepicker/bs-daterangepicker-inline.component.d.ts +8 -0
  116. package/datepicker/bs-daterangepicker-input.directive.d.ts +1 -0
  117. package/datepicker/bs-daterangepicker.component.d.ts +16 -3
  118. package/datepicker/bundles/ngx-bootstrap-datepicker.umd.js +2116 -106
  119. package/datepicker/bundles/ngx-bootstrap-datepicker.umd.js.map +1 -1
  120. package/datepicker/bundles/ngx-bootstrap-datepicker.umd.min.js +15 -1
  121. package/datepicker/bundles/ngx-bootstrap-datepicker.umd.min.js.map +1 -1
  122. package/datepicker/engine/flag-days-calendar.d.ts +1 -0
  123. package/datepicker/esm2015/base/bs-datepicker-container.js +18 -3
  124. package/datepicker/esm2015/bs-datepicker-inline.component.js +25 -9
  125. package/datepicker/esm2015/bs-datepicker-input.directive.js +19 -1
  126. package/datepicker/esm2015/bs-datepicker.component.js +55 -8
  127. package/datepicker/esm2015/bs-datepicker.config.js +36 -2
  128. package/datepicker/esm2015/bs-datepicker.module.js +23 -16
  129. package/datepicker/esm2015/bs-daterangepicker-inline.component.js +37 -7
  130. package/datepicker/esm2015/bs-daterangepicker-input.directive.js +34 -3
  131. package/datepicker/esm2015/bs-daterangepicker.component.js +66 -9
  132. package/datepicker/esm2015/engine/flag-days-calendar.js +6 -3
  133. package/datepicker/esm2015/reducer/bs-datepicker.actions.js +14 -1
  134. package/datepicker/esm2015/reducer/bs-datepicker.effects.js +15 -11
  135. package/datepicker/esm2015/reducer/bs-datepicker.reducer.js +25 -6
  136. package/datepicker/esm2015/reducer/bs-datepicker.state.js +5 -1
  137. package/datepicker/esm2015/themes/bs/bs-custom-dates-view.component.js +46 -8
  138. package/datepicker/esm2015/themes/bs/bs-datepicker-container.component.js +5 -2
  139. package/datepicker/esm2015/themes/bs/bs-datepicker-inline-container.component.js +2 -2
  140. package/datepicker/esm2015/themes/bs/bs-datepicker-navigation-view.component.js +8 -7
  141. package/datepicker/esm2015/themes/bs/bs-daterangepicker-container.component.js +21 -3
  142. package/datepicker/esm2015/themes/bs/bs-daterangepicker-inline-container.component.js +2 -2
  143. package/datepicker/esm2015/themes/bs/bs-days-calendar-view.component.js +22 -8
  144. package/datepicker/esm2015/utils/bs-calendar-utils.js +18 -3
  145. package/datepicker/esm5/base/bs-datepicker-container.js +26 -3
  146. package/datepicker/esm5/bs-datepicker-inline.component.js +25 -9
  147. package/datepicker/esm5/bs-datepicker-input.directive.js +23 -1
  148. package/datepicker/esm5/bs-datepicker.component.js +59 -8
  149. package/datepicker/esm5/bs-datepicker.config.js +36 -2
  150. package/datepicker/esm5/bs-datepicker.module.js +26 -19
  151. package/datepicker/esm5/bs-daterangepicker-inline.component.js +37 -7
  152. package/datepicker/esm5/bs-daterangepicker-input.directive.js +38 -3
  153. package/datepicker/esm5/bs-daterangepicker.component.js +70 -9
  154. package/datepicker/esm5/engine/flag-days-calendar.js +6 -3
  155. package/datepicker/esm5/reducer/bs-datepicker.actions.js +18 -1
  156. package/datepicker/esm5/reducer/bs-datepicker.effects.js +21 -17
  157. package/datepicker/esm5/reducer/bs-datepicker.reducer.js +25 -6
  158. package/datepicker/esm5/reducer/bs-datepicker.state.js +5 -1
  159. package/datepicker/esm5/themes/bs/bs-custom-dates-view.component.js +39 -7
  160. package/datepicker/esm5/themes/bs/bs-datepicker-container.component.js +5 -2
  161. package/datepicker/esm5/themes/bs/bs-datepicker-inline-container.component.js +2 -2
  162. package/datepicker/esm5/themes/bs/bs-datepicker-navigation-view.component.js +2 -2
  163. package/datepicker/esm5/themes/bs/bs-daterangepicker-container.component.js +25 -3
  164. package/datepicker/esm5/themes/bs/bs-daterangepicker-inline-container.component.js +2 -2
  165. package/datepicker/esm5/themes/bs/bs-days-calendar-view.component.js +22 -8
  166. package/datepicker/esm5/utils/bs-calendar-utils.js +18 -3
  167. package/datepicker/fesm2015/ngx-bootstrap-datepicker.js +1958 -91
  168. package/datepicker/fesm2015/ngx-bootstrap-datepicker.js.map +1 -1
  169. package/datepicker/fesm5/ngx-bootstrap-datepicker.js +1989 -93
  170. package/datepicker/fesm5/ngx-bootstrap-datepicker.js.map +1 -1
  171. package/datepicker/ngx-bootstrap-datepicker.metadata.json +1 -1
  172. package/datepicker/package.json +2 -2
  173. package/datepicker/reducer/bs-datepicker.actions.d.ts +2 -0
  174. package/datepicker/reducer/bs-datepicker.effects.d.ts +3 -2
  175. package/datepicker/reducer/bs-datepicker.state.d.ts +2 -0
  176. package/datepicker/themes/bs/bs-custom-dates-view.component.d.ts +6 -1
  177. package/datepicker/themes/bs/bs-daterangepicker-container.component.d.ts +3 -0
  178. package/datepicker/utils/bs-calendar-utils.d.ts +1 -0
  179. package/datepicker/utils/scss/mixins.css.map +1 -1
  180. package/datepicker/utils/scss/mixins.scss +9 -0
  181. package/dropdown/bundles/ngx-bootstrap-dropdown.umd.js +395 -5
  182. package/dropdown/bundles/ngx-bootstrap-dropdown.umd.js.map +1 -1
  183. package/dropdown/bundles/ngx-bootstrap-dropdown.umd.min.js +15 -1
  184. package/dropdown/bundles/ngx-bootstrap-dropdown.umd.min.js.map +1 -1
  185. package/dropdown/esm2015/bs-dropdown-container.component.js +2 -2
  186. package/dropdown/esm2015/bs-dropdown.directive.js +8 -3
  187. package/dropdown/esm5/bs-dropdown-container.component.js +2 -2
  188. package/dropdown/esm5/bs-dropdown.directive.js +9 -3
  189. package/dropdown/fesm2015/ngx-bootstrap-dropdown.js +241 -3
  190. package/dropdown/fesm2015/ngx-bootstrap-dropdown.js.map +1 -1
  191. package/dropdown/fesm5/ngx-bootstrap-dropdown.js +242 -3
  192. package/dropdown/fesm5/ngx-bootstrap-dropdown.js.map +1 -1
  193. package/dropdown/ngx-bootstrap-dropdown.metadata.json +1 -1
  194. package/dropdown/package.json +2 -2
  195. package/locale/bundles/ngx-bootstrap-locale.umd.js +36 -2
  196. package/locale/bundles/ngx-bootstrap-locale.umd.js.map +1 -1
  197. package/locale/bundles/ngx-bootstrap-locale.umd.min.js +1 -1
  198. package/locale/esm2015/ngx-bootstrap-locale.js +2 -2
  199. package/locale/esm2015/public_api.js +5 -1
  200. package/locale/esm5/ngx-bootstrap-locale.js +2 -2
  201. package/locale/esm5/public_api.js +5 -1
  202. package/locale/fesm2015/ngx-bootstrap-locale.js +11 -1
  203. package/locale/fesm2015/ngx-bootstrap-locale.js.map +1 -1
  204. package/locale/fesm5/ngx-bootstrap-locale.js +11 -1
  205. package/locale/fesm5/ngx-bootstrap-locale.js.map +1 -1
  206. package/locale/ngx-bootstrap-locale.metadata.json +1 -1
  207. package/locale/package.json +2 -2
  208. package/locale/public_api.d.ts +4 -0
  209. package/mini-ngrx/bundles/ngx-bootstrap-mini-ngrx.umd.js +187 -2
  210. package/mini-ngrx/bundles/ngx-bootstrap-mini-ngrx.umd.js.map +1 -1
  211. package/mini-ngrx/bundles/ngx-bootstrap-mini-ngrx.umd.min.js +15 -1
  212. package/mini-ngrx/bundles/ngx-bootstrap-mini-ngrx.umd.min.js.map +1 -1
  213. package/mini-ngrx/fesm2015/ngx-bootstrap-mini-ngrx.js +32 -0
  214. package/mini-ngrx/fesm2015/ngx-bootstrap-mini-ngrx.js.map +1 -1
  215. package/mini-ngrx/fesm5/ngx-bootstrap-mini-ngrx.js +32 -0
  216. package/mini-ngrx/fesm5/ngx-bootstrap-mini-ngrx.js.map +1 -1
  217. package/mini-ngrx/package.json +2 -2
  218. package/modal/bs-modal.service.d.ts +1 -2
  219. package/modal/bundles/ngx-bootstrap-modal.umd.js +558 -16
  220. package/modal/bundles/ngx-bootstrap-modal.umd.js.map +1 -1
  221. package/modal/bundles/ngx-bootstrap-modal.umd.min.js +15 -1
  222. package/modal/bundles/ngx-bootstrap-modal.umd.min.js.map +1 -1
  223. package/modal/esm2015/bs-modal.service.js +13 -4
  224. package/modal/esm2015/modal-container.component.js +24 -5
  225. package/modal/esm2015/modal-options.class.js +16 -1
  226. package/modal/esm2015/modal.directive.js +21 -4
  227. package/modal/esm2015/modal.module.js +10 -1
  228. package/modal/esm5/bs-modal.service.js +28 -8
  229. package/modal/esm5/modal-container.component.js +28 -5
  230. package/modal/esm5/modal-options.class.js +16 -1
  231. package/modal/esm5/modal.directive.js +25 -4
  232. package/modal/esm5/modal.module.js +13 -1
  233. package/modal/fesm2015/ngx-bootstrap-modal.js +354 -10
  234. package/modal/fesm2015/ngx-bootstrap-modal.js.map +1 -1
  235. package/modal/fesm5/ngx-bootstrap-modal.js +381 -15
  236. package/modal/fesm5/ngx-bootstrap-modal.js.map +1 -1
  237. package/modal/modal-container.component.d.ts +3 -1
  238. package/modal/modal-options.class.d.ts +13 -0
  239. package/modal/modal.directive.d.ts +3 -1
  240. package/modal/modal.module.d.ts +1 -0
  241. package/modal/ngx-bootstrap-modal.metadata.json +1 -1
  242. package/modal/package.json +2 -2
  243. package/package.json +2 -2
  244. package/pagination/bundles/ngx-bootstrap-pagination.umd.js +276 -4
  245. package/pagination/bundles/ngx-bootstrap-pagination.umd.js.map +1 -1
  246. package/pagination/bundles/ngx-bootstrap-pagination.umd.min.js +1 -1
  247. package/pagination/bundles/ngx-bootstrap-pagination.umd.min.js.map +1 -1
  248. package/pagination/esm2015/models/index.js +49 -4
  249. package/pagination/esm2015/pager.component.js +2 -2
  250. package/pagination/esm2015/pagination.component.js +33 -3
  251. package/pagination/esm2015/public_api.js +1 -1
  252. package/pagination/esm5/models/index.js +49 -4
  253. package/pagination/esm5/pager.component.js +2 -2
  254. package/pagination/esm5/pagination.component.js +33 -3
  255. package/pagination/esm5/public_api.js +1 -1
  256. package/pagination/fesm2015/ngx-bootstrap-pagination.js +284 -2
  257. package/pagination/fesm2015/ngx-bootstrap-pagination.js.map +1 -1
  258. package/pagination/fesm5/ngx-bootstrap-pagination.js +285 -3
  259. package/pagination/fesm5/ngx-bootstrap-pagination.js.map +1 -1
  260. package/pagination/models/index.d.ts +28 -0
  261. package/pagination/ngx-bootstrap-pagination.metadata.json +1 -1
  262. package/pagination/package.json +2 -2
  263. package/pagination/pagination.component.d.ts +12 -2
  264. package/pagination/public_api.d.ts +1 -0
  265. package/popover/bundles/ngx-bootstrap-popover.umd.js +215 -20
  266. package/popover/bundles/ngx-bootstrap-popover.umd.js.map +1 -1
  267. package/popover/bundles/ngx-bootstrap-popover.umd.min.js +1 -1
  268. package/popover/bundles/ngx-bootstrap-popover.umd.min.js.map +1 -1
  269. package/popover/esm2015/popover.config.js +10 -1
  270. package/popover/esm2015/popover.directive.js +97 -16
  271. package/popover/esm5/popover.config.js +10 -1
  272. package/popover/esm5/popover.directive.js +98 -16
  273. package/popover/fesm2015/ngx-bootstrap-popover.js +221 -16
  274. package/popover/fesm2015/ngx-bootstrap-popover.js.map +1 -1
  275. package/popover/fesm5/ngx-bootstrap-popover.js +222 -16
  276. package/popover/fesm5/ngx-bootstrap-popover.js.map +1 -1
  277. package/popover/ngx-bootstrap-popover.metadata.json +1 -1
  278. package/popover/package.json +2 -2
  279. package/popover/popover.config.d.ts +2 -0
  280. package/popover/popover.directive.d.ts +9 -1
  281. package/positioning/bundles/ngx-bootstrap-positioning.umd.js +286 -13
  282. package/positioning/bundles/ngx-bootstrap-positioning.umd.js.map +1 -1
  283. package/positioning/bundles/ngx-bootstrap-positioning.umd.min.js +15 -1
  284. package/positioning/bundles/ngx-bootstrap-positioning.umd.min.js.map +1 -1
  285. package/positioning/esm2015/modifiers/arrow.js +19 -5
  286. package/positioning/esm2015/modifiers/initData.js +12 -2
  287. package/positioning/esm2015/modifiers/shift.js +6 -4
  288. package/positioning/esm5/modifiers/arrow.js +19 -5
  289. package/positioning/esm5/modifiers/initData.js +12 -2
  290. package/positioning/esm5/modifiers/shift.js +8 -6
  291. package/positioning/fesm2015/ngx-bootstrap-positioning.js +128 -8
  292. package/positioning/fesm2015/ngx-bootstrap-positioning.js.map +1 -1
  293. package/positioning/fesm5/ngx-bootstrap-positioning.js +132 -10
  294. package/positioning/fesm5/ngx-bootstrap-positioning.js.map +1 -1
  295. package/positioning/package.json +2 -2
  296. package/progressbar/bundles/ngx-bootstrap-progressbar.umd.js +77 -2
  297. package/progressbar/bundles/ngx-bootstrap-progressbar.umd.js.map +1 -1
  298. package/progressbar/bundles/ngx-bootstrap-progressbar.umd.min.js +1 -1
  299. package/progressbar/bundles/ngx-bootstrap-progressbar.umd.min.js.map +1 -1
  300. package/progressbar/fesm2015/ngx-bootstrap-progressbar.js +85 -0
  301. package/progressbar/fesm2015/ngx-bootstrap-progressbar.js.map +1 -1
  302. package/progressbar/fesm5/ngx-bootstrap-progressbar.js +85 -0
  303. package/progressbar/fesm5/ngx-bootstrap-progressbar.js.map +1 -1
  304. package/progressbar/package.json +2 -2
  305. package/rating/bundles/ngx-bootstrap-rating.umd.js +92 -7
  306. package/rating/bundles/ngx-bootstrap-rating.umd.js.map +1 -1
  307. package/rating/bundles/ngx-bootstrap-rating.umd.min.js +1 -1
  308. package/rating/bundles/ngx-bootstrap-rating.umd.min.js.map +1 -1
  309. package/rating/esm2015/ngx-bootstrap-rating.js +2 -2
  310. package/rating/esm2015/public_api.js +2 -1
  311. package/rating/esm2015/rating.component.js +14 -5
  312. package/rating/esm2015/rating.config.js +27 -0
  313. package/rating/esm2015/rating.module.js +3 -2
  314. package/rating/esm5/ngx-bootstrap-rating.js +2 -2
  315. package/rating/esm5/public_api.js +2 -1
  316. package/rating/esm5/rating.component.js +13 -5
  317. package/rating/esm5/rating.config.js +29 -0
  318. package/rating/esm5/rating.module.js +3 -2
  319. package/rating/fesm2015/ngx-bootstrap-rating.js +101 -7
  320. package/rating/fesm2015/ngx-bootstrap-rating.js.map +1 -1
  321. package/rating/fesm5/ngx-bootstrap-rating.js +101 -7
  322. package/rating/fesm5/ngx-bootstrap-rating.js.map +1 -1
  323. package/rating/ngx-bootstrap-rating.metadata.json +1 -1
  324. package/rating/package.json +2 -2
  325. package/rating/public_api.d.ts +1 -0
  326. package/rating/rating.component.d.ts +4 -1
  327. package/rating/rating.config.d.ts +5 -0
  328. package/sortable/bundles/ngx-bootstrap-sortable.umd.js +254 -2
  329. package/sortable/bundles/ngx-bootstrap-sortable.umd.js.map +1 -1
  330. package/sortable/bundles/ngx-bootstrap-sortable.umd.min.js +15 -1
  331. package/sortable/bundles/ngx-bootstrap-sortable.umd.min.js.map +1 -1
  332. package/sortable/fesm2015/ngx-bootstrap-sortable.js +113 -0
  333. package/sortable/fesm2015/ngx-bootstrap-sortable.js.map +1 -1
  334. package/sortable/fesm5/ngx-bootstrap-sortable.js +114 -1
  335. package/sortable/fesm5/ngx-bootstrap-sortable.js.map +1 -1
  336. package/sortable/package.json +2 -2
  337. package/tabs/bundles/ngx-bootstrap-tabs.umd.js +153 -4
  338. package/tabs/bundles/ngx-bootstrap-tabs.umd.js.map +1 -1
  339. package/tabs/bundles/ngx-bootstrap-tabs.umd.min.js +1 -1
  340. package/tabs/bundles/ngx-bootstrap-tabs.umd.min.js.map +1 -1
  341. package/tabs/esm2015/tab.directive.js +13 -2
  342. package/tabs/esm2015/tabset.component.js +7 -2
  343. package/tabs/esm2015/tabset.config.js +10 -1
  344. package/tabs/esm5/tab.directive.js +17 -2
  345. package/tabs/esm5/tabset.component.js +7 -2
  346. package/tabs/esm5/tabset.config.js +10 -1
  347. package/tabs/fesm2015/ngx-bootstrap-tabs.js +157 -2
  348. package/tabs/fesm2015/ngx-bootstrap-tabs.js.map +1 -1
  349. package/tabs/fesm5/ngx-bootstrap-tabs.js +162 -3
  350. package/tabs/fesm5/ngx-bootstrap-tabs.js.map +1 -1
  351. package/tabs/ngx-bootstrap-tabs.metadata.json +1 -1
  352. package/tabs/package.json +2 -2
  353. package/tabs/tab.directive.d.ts +2 -0
  354. package/tabs/tabset.component.d.ts +2 -0
  355. package/tabs/tabset.config.d.ts +2 -0
  356. package/timepicker/bundles/ngx-bootstrap-timepicker.umd.js +464 -8
  357. package/timepicker/bundles/ngx-bootstrap-timepicker.umd.js.map +1 -1
  358. package/timepicker/bundles/ngx-bootstrap-timepicker.umd.min.js +15 -1
  359. package/timepicker/bundles/ngx-bootstrap-timepicker.umd.min.js.map +1 -1
  360. package/timepicker/esm2015/timepicker.component.js +8 -2
  361. package/timepicker/esm2015/timepicker.config.js +28 -1
  362. package/timepicker/esm2015/timepicker.utils.js +9 -6
  363. package/timepicker/esm5/timepicker.component.js +8 -2
  364. package/timepicker/esm5/timepicker.config.js +28 -1
  365. package/timepicker/esm5/timepicker.utils.js +9 -6
  366. package/timepicker/fesm2015/ngx-bootstrap-timepicker.js +311 -6
  367. package/timepicker/fesm2015/ngx-bootstrap-timepicker.js.map +1 -1
  368. package/timepicker/fesm5/ngx-bootstrap-timepicker.js +315 -7
  369. package/timepicker/fesm5/ngx-bootstrap-timepicker.js.map +1 -1
  370. package/timepicker/ngx-bootstrap-timepicker.metadata.json +1 -1
  371. package/timepicker/package.json +2 -2
  372. package/timepicker/timepicker.component.d.ts +3 -0
  373. package/timepicker/timepicker.config.d.ts +6 -0
  374. package/tooltip/bundles/ngx-bootstrap-tooltip.umd.js +355 -8
  375. package/tooltip/bundles/ngx-bootstrap-tooltip.umd.js.map +1 -1
  376. package/tooltip/bundles/ngx-bootstrap-tooltip.umd.min.js +15 -1
  377. package/tooltip/bundles/ngx-bootstrap-tooltip.umd.min.js.map +1 -1
  378. package/tooltip/esm2015/tooltip.directive.js +47 -10
  379. package/tooltip/esm5/tooltip.directive.js +50 -10
  380. package/tooltip/fesm2015/ngx-bootstrap-tooltip.js +200 -7
  381. package/tooltip/fesm2015/ngx-bootstrap-tooltip.js.map +1 -1
  382. package/tooltip/fesm5/ngx-bootstrap-tooltip.js +203 -7
  383. package/tooltip/fesm5/ngx-bootstrap-tooltip.js.map +1 -1
  384. package/tooltip/ngx-bootstrap-tooltip.metadata.json +1 -1
  385. package/tooltip/package.json +2 -2
  386. package/tooltip/tooltip.directive.d.ts +3 -1
  387. package/typeahead/bundles/ngx-bootstrap-typeahead.umd.js +719 -43
  388. package/typeahead/bundles/ngx-bootstrap-typeahead.umd.js.map +1 -1
  389. package/typeahead/bundles/ngx-bootstrap-typeahead.umd.min.js +15 -1
  390. package/typeahead/bundles/ngx-bootstrap-typeahead.umd.min.js.map +1 -1
  391. package/typeahead/esm2015/models/index.js +87 -0
  392. package/typeahead/esm2015/ngx-bootstrap-typeahead.js +2 -2
  393. package/typeahead/esm2015/public_api.js +2 -1
  394. package/typeahead/esm2015/typeahead-container.component.js +52 -11
  395. package/typeahead/esm2015/typeahead-order.class.js +19 -0
  396. package/typeahead/esm2015/typeahead.config.js +10 -1
  397. package/typeahead/esm2015/typeahead.directive.js +133 -30
  398. package/typeahead/esm5/models/index.js +87 -0
  399. package/typeahead/esm5/ngx-bootstrap-typeahead.js +2 -2
  400. package/typeahead/esm5/public_api.js +2 -1
  401. package/typeahead/esm5/typeahead-container.component.js +59 -11
  402. package/typeahead/esm5/typeahead-order.class.js +23 -0
  403. package/typeahead/esm5/typeahead.config.js +10 -1
  404. package/typeahead/esm5/typeahead.directive.js +140 -36
  405. package/typeahead/fesm2015/ngx-bootstrap-typeahead.js +550 -37
  406. package/typeahead/fesm2015/ngx-bootstrap-typeahead.js.map +1 -1
  407. package/typeahead/fesm5/ngx-bootstrap-typeahead.js +567 -43
  408. package/typeahead/fesm5/ngx-bootstrap-typeahead.js.map +1 -1
  409. package/typeahead/models/index.d.ts +41 -0
  410. package/typeahead/ngx-bootstrap-typeahead.metadata.json +1 -1
  411. package/typeahead/package.json +2 -2
  412. package/typeahead/public_api.d.ts +2 -0
  413. package/typeahead/typeahead-container.component.d.ts +10 -5
  414. package/typeahead/typeahead-order.class.d.ts +6 -0
  415. package/typeahead/typeahead.config.d.ts +2 -0
  416. package/typeahead/typeahead.directive.d.ts +28 -10
  417. package/utils/bundles/ngx-bootstrap-utils.umd.js +54 -2
  418. package/utils/bundles/ngx-bootstrap-utils.umd.js.map +1 -1
  419. package/utils/bundles/ngx-bootstrap-utils.umd.min.js +2 -2
  420. package/utils/bundles/ngx-bootstrap-utils.umd.min.js.map +1 -1
  421. package/utils/fesm2015/ngx-bootstrap-utils.js +62 -0
  422. package/utils/fesm2015/ngx-bootstrap-utils.js.map +1 -1
  423. package/utils/fesm5/ngx-bootstrap-utils.js +62 -0
  424. package/utils/fesm5/ngx-bootstrap-utils.js.map +1 -1
  425. package/utils/package.json +2 -2
  426. package/bundles/ngx-bootstrap.umd.js +0 -1037
  427. package/bundles/ngx-bootstrap.umd.js.map +0 -1
  428. package/bundles/ngx-bootstrap.umd.min.js +0 -2
  429. package/bundles/ngx-bootstrap.umd.min.js.map +0 -1
  430. package/esm2015/ngx-bootstrap.js +0 -9
  431. package/esm2015/public_api.js +0 -30
  432. package/esm5/ngx-bootstrap.js +0 -9
  433. package/esm5/public_api.js +0 -30
  434. package/fesm2015/ngx-bootstrap.js +0 -24
  435. package/fesm2015/ngx-bootstrap.js.map +0 -1
  436. package/fesm5/ngx-bootstrap.js +0 -24
  437. package/fesm5/ngx-bootstrap.js.map +0 -1
  438. package/ngx-bootstrap.d.ts +0 -4
  439. package/ngx-bootstrap.metadata.json +0 -1
  440. package/public_api.d.ts +0 -25
@@ -1 +1 @@
1
- {"version":3,"sources":["ng://ngx-bootstrap/pagination/pagination.config.ts","ng://ngx-bootstrap/pagination/pager.component.ts","ng://ngx-bootstrap/pagination/pagination.component.ts","ng://ngx-bootstrap/pagination/pagination.module.ts"],"names":["PaginationConfig","this","main","maxSize","itemsPerPage","boundaryLinks","directionLinks","firstText","previousText","nextText","lastText","pageBtnClass","rotate","pager","align","Injectable","PAGER_CONTROL_VALUE_ACCESSOR","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","PagerComponent","multi","elementRef","paginationConfig","changeDetection","numPages","EventEmitter","pageChanged","onChange","Function","prototype","onTouched","inited","_page","config","configureOptions","Object","assign","defineProperty","_itemsPerPage","v","totalPages","calculateTotalPages","_totalItems","_totalPages","emit","selectPage","page","value","_previous","markForCheck","ngOnInit","window","classMap","nativeElement","getAttribute","pages","getPages","writeValue","getText","key","noPrevious","noNext","registerOnChange","fn","registerOnTouched","event","preventDefault","disabled","target","blur","makePage","num","text","active","number","currentPage","startPage","endPage","isMaxSized","Math","max","floor","ceil","min","toString","push","previousPageSet","unshift","nextPageSet","totalItems","Component","args","selector","template","providers","ElementRef","ChangeDetectorRef","Input","Output","PAGINATION_CONTROL_VALUE_ACCESSOR","PaginationComponent","PaginationModule","forRoot","ngModule","NgModule","imports","CommonModule","declarations","exports"],"mappings":"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","sourcesContent":["// todo: split\nimport { Injectable } from '@angular/core';\n\nimport { ConfigModel, PagerModel } from './models';\n\n/** Provides default values for Pagination and pager components */\n@Injectable()\nexport class PaginationConfig {\n main: ConfigModel = {\n maxSize: void 0,\n itemsPerPage: 10,\n boundaryLinks: false,\n directionLinks: true,\n firstText: 'First',\n previousText: 'Previous',\n nextText: 'Next',\n lastText: 'Last',\n pageBtnClass: '',\n rotate: true\n };\n pager: PagerModel = {\n itemsPerPage: 15,\n previousText: '« Previous',\n nextText: 'Next »',\n pageBtnClass: '',\n align: true\n };\n}\n","import {\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnInit,\n Output,\n Provider\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { PageChangedEvent } from './pagination.component';\nimport { PaginationConfig } from './pagination.config';\n\nimport { ConfigModel, PagesModel } from './models';\n\nexport const PAGER_CONTROL_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n /* tslint:disable-next-line: no-use-before-declare */\n useExisting: forwardRef(() => PagerComponent),\n multi: true\n};\n\n@Component({\n selector: 'pager',\n templateUrl: './pager.component.html',\n providers: [PAGER_CONTROL_VALUE_ACCESSOR]\n})\nexport class PagerComponent implements ControlValueAccessor, OnInit {\n config: ConfigModel;\n /** if `true` aligns each link to the sides of pager */\n @Input() align: boolean;\n /** limit number for page links in pager */\n @Input() maxSize: number;\n /** if false first and last buttons will be hidden */\n @Input() boundaryLinks: boolean;\n /** if false previous and next buttons will be hidden */\n @Input() directionLinks: boolean;\n // labels\n /** first button text */\n @Input() firstText: string;\n /** previous button text */\n @Input() previousText: string;\n /** next button text */\n @Input() nextText: string;\n /** last button text */\n @Input() lastText: string;\n /** if true current page will in the middle of pages list */\n @Input() rotate: boolean;\n // css\n /** add class to <code><li\\></code> */\n @Input() pageBtnClass: string;\n\n /** if true pagination component will be disabled */\n @Input() disabled: boolean;\n\n /** fired when total pages count changes, $event:number equals to total pages count */\n @Output() numPages: EventEmitter<number> = new EventEmitter<number>();\n /** fired when page was changed, $event:{page, itemsPerPage} equals to\n * object with current page index and number of items per page\n */\n @Output()\n pageChanged: EventEmitter<PageChangedEvent> = new EventEmitter<PageChangedEvent>();\n\n /** maximum number of items per page. If value less than 1 will display all items on one page */\n @Input()\n get itemsPerPage(): number {\n return this._itemsPerPage;\n }\n\n set itemsPerPage(v: number) {\n this._itemsPerPage = v;\n this.totalPages = this.calculateTotalPages();\n }\n\n /** total number of items in all pages */\n @Input()\n get totalItems(): number {\n return this._totalItems;\n }\n\n set totalItems(v: number) {\n this._totalItems = v;\n this.totalPages = this.calculateTotalPages();\n }\n\n get totalPages(): number {\n return this._totalPages;\n }\n\n set totalPages(v: number) {\n this._totalPages = v;\n this.numPages.emit(v);\n if (this.inited) {\n this.selectPage(this.page);\n }\n }\n\n set page(value: number) {\n const _previous = this._page;\n this._page = value > this.totalPages ? this.totalPages : value || 1;\n this.changeDetection.markForCheck();\n\n if (_previous === this._page || typeof _previous === 'undefined') {\n return;\n }\n\n this.pageChanged.emit({\n page: this._page,\n itemsPerPage: this.itemsPerPage\n });\n }\n\n get page(): number {\n return this._page;\n }\n\n onChange = Function.prototype;\n onTouched = Function.prototype;\n\n classMap: string;\n pages: PagesModel[];\n\n protected _itemsPerPage: number;\n protected _totalItems: number;\n protected _totalPages: number;\n protected inited = false;\n protected _page = 1;\n\n constructor(private elementRef: ElementRef,\n paginationConfig: PaginationConfig,\n private changeDetection: ChangeDetectorRef) {\n this.elementRef = elementRef;\n if (!this.config) {\n this.configureOptions(\n Object.assign({}, paginationConfig.main, paginationConfig.pager)\n );\n }\n }\n\n configureOptions(config: ConfigModel): void {\n this.config = Object.assign({}, config);\n }\n\n ngOnInit(): void {\n if (typeof window !== 'undefined') {\n this.classMap = this.elementRef.nativeElement.getAttribute('class') || '';\n }\n // watch for maxSize\n this.maxSize =\n typeof this.maxSize !== 'undefined' ? this.maxSize : this.config.maxSize;\n this.rotate =\n typeof this.rotate !== 'undefined' ? this.rotate : this.config.rotate;\n this.boundaryLinks =\n typeof this.boundaryLinks !== 'undefined'\n ? this.boundaryLinks\n : this.config.boundaryLinks;\n this.directionLinks =\n typeof this.directionLinks !== 'undefined'\n ? this.directionLinks\n : this.config.directionLinks;\n this.pageBtnClass =\n typeof this.pageBtnClass !== 'undefined'\n ? this.pageBtnClass\n : this.config.pageBtnClass;\n\n // base class\n this.itemsPerPage =\n typeof this.itemsPerPage !== 'undefined'\n ? this.itemsPerPage\n : this.config.itemsPerPage;\n this.totalPages = this.calculateTotalPages();\n // this class\n this.pages = this.getPages(this.page, this.totalPages);\n this.inited = true;\n }\n\n writeValue(value: number): void {\n this.page = value;\n this.pages = this.getPages(this.page, this.totalPages);\n }\n\n getText(key: string): string {\n // tslint:disable-next-line:no-any\n return (this as any)[`${key}Text`] || (this as any).config[`${key}Text`];\n }\n\n noPrevious(): boolean {\n return this.page === 1;\n }\n\n noNext(): boolean {\n return this.page === this.totalPages;\n }\n\n registerOnChange(fn: () => {}): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => {}): void {\n this.onTouched = fn;\n }\n\n selectPage(page: number, event?: Event): void {\n if (event) {\n event.preventDefault();\n }\n\n if (!this.disabled) {\n if (event && event.target) {\n // tslint:disable-next-line:no-any\n const target: any = event.target;\n target.blur();\n }\n this.writeValue(page);\n this.onChange(this.page);\n }\n }\n\n // Create page object used in template\n protected makePage(num: number,\n text: string,\n active: boolean): { number: number; text: string; active: boolean } {\n return {text, number: num, active};\n }\n\n protected getPages(currentPage: number, totalPages: number): PagesModel[] {\n const pages: PagesModel[] = [];\n\n // Default page limits\n let startPage = 1;\n let endPage = totalPages;\n const isMaxSized =\n typeof this.maxSize !== 'undefined' && this.maxSize < totalPages;\n\n // recompute if maxSize\n if (isMaxSized) {\n if (this.rotate) {\n // Current page is displayed in the middle of the visible ones\n startPage = Math.max(currentPage - Math.floor(this.maxSize / 2), 1);\n endPage = startPage + this.maxSize - 1;\n\n // Adjust if limit is exceeded\n if (endPage > totalPages) {\n endPage = totalPages;\n startPage = endPage - this.maxSize + 1;\n }\n } else {\n // Visible pages are paginated with maxSize\n startPage =\n (Math.ceil(currentPage / this.maxSize) - 1) * this.maxSize + 1;\n\n // Adjust last page if limit is exceeded\n endPage = Math.min(startPage + this.maxSize - 1, totalPages);\n }\n }\n\n // Add page number links\n for (let num = startPage; num <= endPage; num++) {\n const page = this.makePage(num, num.toString(), num === currentPage);\n pages.push(page);\n }\n\n // Add links to move between page sets\n if (isMaxSized && !this.rotate) {\n if (startPage > 1) {\n const previousPageSet = this.makePage(startPage - 1, '...', false);\n pages.unshift(previousPageSet);\n }\n\n if (endPage < totalPages) {\n const nextPageSet = this.makePage(endPage + 1, '...', false);\n pages.push(nextPageSet);\n }\n }\n\n return pages;\n }\n\n // base class\n protected calculateTotalPages(): number {\n const totalPages =\n this.itemsPerPage < 1\n ? 1\n : Math.ceil(this.totalItems / this.itemsPerPage);\n\n return Math.max(totalPages || 0, 1);\n }\n}\n","import {\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnInit,\n Output,\n Provider\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { PaginationConfig } from './pagination.config';\n\nimport { ConfigModel, PagesModel } from './models';\n\nexport interface PageChangedEvent {\n itemsPerPage: number;\n page: number;\n}\n\nexport const PAGINATION_CONTROL_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n /* tslint:disable-next-line: no-use-before-declare */\n useExisting: forwardRef(() => PaginationComponent),\n multi: true\n};\n\n@Component({\n selector: 'pagination',\n templateUrl: './pagination.component.html',\n providers: [PAGINATION_CONTROL_VALUE_ACCESSOR]\n})\nexport class PaginationComponent implements ControlValueAccessor, OnInit {\n config: ConfigModel;\n /** if `true` aligns each link to the sides of pager */\n @Input() align: boolean;\n /** limit number for page links in pager */\n @Input() maxSize: number;\n /** if false first and last buttons will be hidden */\n @Input() boundaryLinks: boolean;\n /** if false previous and next buttons will be hidden */\n @Input() directionLinks: boolean;\n // labels\n /** first button text */\n @Input() firstText: string;\n /** previous button text */\n @Input() previousText: string;\n /** next button text */\n @Input() nextText: string;\n /** last button text */\n @Input() lastText: string;\n /** if true current page will in the middle of pages list */\n @Input() rotate: boolean;\n // css\n /** add class to <code><li\\></code> */\n @Input() pageBtnClass: string;\n\n /** if true pagination component will be disabled */\n @Input() disabled: boolean;\n\n /** fired when total pages count changes, $event:number equals to total pages count */\n @Output() numPages: EventEmitter<number> = new EventEmitter<number>();\n /** fired when page was changed, $event:{page, itemsPerPage} equals to object\n * with current page index and number of items per page\n */\n @Output()\n pageChanged = new EventEmitter<PageChangedEvent>();\n\n /** maximum number of items per page. If value less than 1 will display all items on one page */\n @Input()\n get itemsPerPage(): number {\n return this._itemsPerPage;\n }\n\n set itemsPerPage(v: number) {\n this._itemsPerPage = v;\n this.totalPages = this.calculateTotalPages();\n }\n\n /** total number of items in all pages */\n @Input()\n get totalItems(): number {\n return this._totalItems;\n }\n\n set totalItems(v: number) {\n this._totalItems = v;\n this.totalPages = this.calculateTotalPages();\n }\n\n get totalPages(): number {\n return this._totalPages;\n }\n\n set totalPages(v: number) {\n this._totalPages = v;\n this.numPages.emit(v);\n if (this.inited) {\n this.selectPage(this.page);\n }\n }\n\n set page(value: number) {\n const _previous = this._page;\n this._page = value > this.totalPages ? this.totalPages : value || 1;\n this.changeDetection.markForCheck();\n\n if (_previous === this._page || typeof _previous === 'undefined') {\n return;\n }\n\n this.pageChanged.emit({\n page: this._page,\n itemsPerPage: this.itemsPerPage\n });\n }\n\n get page(): number {\n return this._page;\n }\n\n onChange = Function.prototype;\n onTouched = Function.prototype;\n\n classMap: string;\n pages: PagesModel[];\n\n protected _itemsPerPage: number;\n protected _totalItems: number;\n protected _totalPages: number;\n protected inited = false;\n protected _page = 1;\n\n constructor(\n private elementRef: ElementRef,\n paginationConfig: PaginationConfig,\n private changeDetection: ChangeDetectorRef\n ) {\n this.elementRef = elementRef;\n if (!this.config) {\n this.configureOptions(paginationConfig.main);\n }\n }\n\n configureOptions(config: ConfigModel): void {\n this.config = Object.assign({}, config);\n }\n\n ngOnInit(): void {\n if (typeof window !== 'undefined') {\n this.classMap = this.elementRef.nativeElement.getAttribute('class') || '';\n }\n // watch for maxSize\n this.maxSize =\n typeof this.maxSize !== 'undefined' ? this.maxSize : this.config.maxSize;\n this.rotate =\n typeof this.rotate !== 'undefined' ? this.rotate : this.config.rotate;\n this.boundaryLinks =\n typeof this.boundaryLinks !== 'undefined'\n ? this.boundaryLinks\n : this.config.boundaryLinks;\n this.directionLinks =\n typeof this.directionLinks !== 'undefined'\n ? this.directionLinks\n : this.config.directionLinks;\n this.pageBtnClass =\n typeof this.pageBtnClass !== 'undefined'\n ? this.pageBtnClass\n : this.config.pageBtnClass;\n\n // base class\n this.itemsPerPage =\n typeof this.itemsPerPage !== 'undefined'\n ? this.itemsPerPage\n : this.config.itemsPerPage;\n this.totalPages = this.calculateTotalPages();\n // this class\n this.pages = this.getPages(this.page, this.totalPages);\n this.inited = true;\n }\n\n writeValue(value: number): void {\n this.page = value;\n this.pages = this.getPages(this.page, this.totalPages);\n }\n\n getText(key: string): string {\n // tslint:disable-next-line:no-any\n return (this as any)[`${key}Text`] || (this as any).config[`${key}Text`];\n }\n\n noPrevious(): boolean {\n return this.page === 1;\n }\n\n noNext(): boolean {\n return this.page === this.totalPages;\n }\n\n registerOnChange(fn: () => {}): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => {}): void {\n this.onTouched = fn;\n }\n\n selectPage(page: number, event?: Event): void {\n if (event) {\n event.preventDefault();\n }\n\n if (!this.disabled) {\n if (event && event.target) {\n // tslint:disable-next-line:no-any\n const target: any = event.target;\n target.blur();\n }\n this.writeValue(page);\n this.onChange(this.page);\n }\n }\n\n // Create page object used in template\n protected makePage(\n num: number,\n text: string,\n active: boolean\n ): { number: number; text: string; active: boolean } {\n return { text, number: num, active };\n }\n\n protected getPages(currentPage: number, totalPages: number): PagesModel[] {\n const pages: PagesModel[] = [];\n\n // Default page limits\n let startPage = 1;\n let endPage = totalPages;\n const isMaxSized =\n typeof this.maxSize !== 'undefined' && this.maxSize < totalPages;\n\n // recompute if maxSize\n if (isMaxSized) {\n if (this.rotate) {\n // Current page is displayed in the middle of the visible ones\n startPage = Math.max(currentPage - Math.floor(this.maxSize / 2), 1);\n endPage = startPage + this.maxSize - 1;\n\n // Adjust if limit is exceeded\n if (endPage > totalPages) {\n endPage = totalPages;\n startPage = endPage - this.maxSize + 1;\n }\n } else {\n // Visible pages are paginated with maxSize\n startPage =\n (Math.ceil(currentPage / this.maxSize) - 1) * this.maxSize + 1;\n\n // Adjust last page if limit is exceeded\n endPage = Math.min(startPage + this.maxSize - 1, totalPages);\n }\n }\n\n // Add page number links\n for (let num = startPage; num <= endPage; num++) {\n const page = this.makePage(num, num.toString(), num === currentPage);\n pages.push(page);\n }\n\n // Add links to move between page sets\n if (isMaxSized && !this.rotate) {\n if (startPage > 1) {\n const previousPageSet = this.makePage(startPage - 1, '...', false);\n pages.unshift(previousPageSet);\n }\n\n if (endPage < totalPages) {\n const nextPageSet = this.makePage(endPage + 1, '...', false);\n pages.push(nextPageSet);\n }\n }\n\n return pages;\n }\n\n // base class\n protected calculateTotalPages(): number {\n const totalPages =\n this.itemsPerPage < 1\n ? 1\n : Math.ceil(this.totalItems / this.itemsPerPage);\n\n return Math.max(totalPages || 0, 1);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule, ModuleWithProviders } from '@angular/core';\nimport { PaginationConfig } from './pagination.config';\n\nimport { PagerComponent } from './pager.component';\nimport { PaginationComponent } from './pagination.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [PagerComponent, PaginationComponent],\n exports: [PagerComponent, PaginationComponent]\n})\nexport class PaginationModule {\n static forRoot(): ModuleWithProviders {\n return { ngModule: PaginationModule, providers: [PaginationConfig] };\n }\n}\n"]}
1
+ {"version":3,"sources":["ng://ngx-bootstrap/pagination/pagination.config.ts","ng://ngx-bootstrap/pagination/pager.component.ts","ng://ngx-bootstrap/pagination/pagination.component.ts","ng://ngx-bootstrap/pagination/pagination.module.ts"],"names":["PaginationConfig","this","main","maxSize","itemsPerPage","boundaryLinks","directionLinks","firstText","previousText","nextText","lastText","pageBtnClass","rotate","pager","align","Injectable","PAGER_CONTROL_VALUE_ACCESSOR","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","PagerComponent","multi","elementRef","paginationConfig","changeDetection","numPages","EventEmitter","pageChanged","onChange","Function","prototype","onTouched","inited","_page","config","configureOptions","Object","assign","defineProperty","_itemsPerPage","v","totalPages","calculateTotalPages","_totalItems","_totalPages","emit","selectPage","page","value","_previous","markForCheck","ngOnInit","window","classMap","nativeElement","getAttribute","pages","getPages","writeValue","getText","key","noPrevious","noNext","registerOnChange","fn","registerOnTouched","event","preventDefault","disabled","target","blur","makePage","num","text","active","number","currentPage","startPage","endPage","isMaxSized","Math","max","floor","ceil","min","toString","push","previousPageSet","unshift","nextPageSet","totalItems","Component","args","selector","template","providers","ElementRef","ChangeDetectorRef","Input","Output","PAGINATION_CONTROL_VALUE_ACCESSOR","PaginationComponent","PaginationModule","forRoot","ngModule","NgModule","imports","CommonModule","declarations","exports"],"mappings":"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","sourcesContent":["// todo: split\nimport { Injectable } from '@angular/core';\n\nimport { ConfigModel, PagerModel } from './models';\n\n/** Provides default values for Pagination and pager components */\n@Injectable()\nexport class PaginationConfig {\n main: ConfigModel = {\n maxSize: void 0,\n itemsPerPage: 10,\n boundaryLinks: false,\n directionLinks: true,\n firstText: 'First',\n previousText: 'Previous',\n nextText: 'Next',\n lastText: 'Last',\n pageBtnClass: '',\n rotate: true\n };\n pager: PagerModel = {\n itemsPerPage: 15,\n previousText: '« Previous',\n nextText: 'Next »',\n pageBtnClass: '',\n align: true\n };\n}\n","import {\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnInit,\n Output,\n Provider\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { PageChangedEvent } from './pagination.component';\nimport { PaginationConfig } from './pagination.config';\n\nimport { ConfigModel, PagesModel } from './models';\n\nexport const PAGER_CONTROL_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n /* tslint:disable-next-line: no-use-before-declare */\n useExisting: forwardRef(() => PagerComponent),\n multi: true\n};\n\n@Component({\n selector: 'pager',\n templateUrl: './pager.component.html',\n providers: [PAGER_CONTROL_VALUE_ACCESSOR]\n})\nexport class PagerComponent implements ControlValueAccessor, OnInit {\n config: ConfigModel;\n /** if `true` aligns each link to the sides of pager */\n @Input() align: boolean;\n /** limit number for page links in pager */\n @Input() maxSize: number;\n /** if false first and last buttons will be hidden */\n @Input() boundaryLinks: boolean;\n /** if false previous and next buttons will be hidden */\n @Input() directionLinks: boolean;\n // labels\n /** first button text */\n @Input() firstText: string;\n /** previous button text */\n @Input() previousText: string;\n /** next button text */\n @Input() nextText: string;\n /** last button text */\n @Input() lastText: string;\n /** if true current page will in the middle of pages list */\n @Input() rotate: boolean;\n // css\n /** add class to <code><li\\></code> */\n @Input() pageBtnClass: string;\n\n /** if true pagination component will be disabled */\n @Input() disabled: boolean;\n\n /** fired when total pages count changes, $event:number equals to total pages count */\n @Output() numPages: EventEmitter<number> = new EventEmitter<number>();\n /** fired when page was changed, $event:{page, itemsPerPage} equals to\n * object with current page index and number of items per page\n */\n @Output()\n pageChanged: EventEmitter<PageChangedEvent> = new EventEmitter<PageChangedEvent>();\n\n /** maximum number of items per page. If value less than 1 will display all items on one page */\n @Input()\n get itemsPerPage(): number {\n return this._itemsPerPage;\n }\n\n set itemsPerPage(v: number) {\n this._itemsPerPage = v;\n this.totalPages = this.calculateTotalPages();\n }\n\n /** total number of items in all pages */\n @Input()\n get totalItems(): number {\n return this._totalItems;\n }\n\n set totalItems(v: number) {\n this._totalItems = v;\n this.totalPages = this.calculateTotalPages();\n }\n\n get totalPages(): number {\n return this._totalPages;\n }\n\n set totalPages(v: number) {\n this._totalPages = v;\n this.numPages.emit(v);\n if (this.inited) {\n this.selectPage(this.page);\n }\n }\n\n set page(value: number) {\n const _previous = this._page;\n this._page = value > this.totalPages ? this.totalPages : value || 1;\n this.changeDetection.markForCheck();\n\n if (_previous === this._page || typeof _previous === 'undefined') {\n return;\n }\n\n this.pageChanged.emit({\n page: this._page,\n itemsPerPage: this.itemsPerPage\n });\n }\n\n get page(): number {\n return this._page;\n }\n\n onChange = Function.prototype;\n onTouched = Function.prototype;\n\n classMap: string;\n pages: PagesModel[];\n\n protected _itemsPerPage: number;\n protected _totalItems: number;\n protected _totalPages: number;\n protected inited = false;\n protected _page = 1;\n\n constructor(private elementRef: ElementRef,\n paginationConfig: PaginationConfig,\n private changeDetection: ChangeDetectorRef) {\n this.elementRef = elementRef;\n if (!this.config) {\n this.configureOptions(\n Object.assign({}, paginationConfig.main, paginationConfig.pager)\n );\n }\n }\n\n configureOptions(config: ConfigModel): void {\n this.config = Object.assign({}, config);\n }\n\n ngOnInit(): void {\n if (typeof window !== 'undefined') {\n this.classMap = this.elementRef.nativeElement.getAttribute('class') || '';\n }\n // watch for maxSize\n this.maxSize =\n typeof this.maxSize !== 'undefined' ? this.maxSize : this.config.maxSize;\n this.rotate =\n typeof this.rotate !== 'undefined' ? this.rotate : this.config.rotate;\n this.boundaryLinks =\n typeof this.boundaryLinks !== 'undefined'\n ? this.boundaryLinks\n : this.config.boundaryLinks;\n this.directionLinks =\n typeof this.directionLinks !== 'undefined'\n ? this.directionLinks\n : this.config.directionLinks;\n this.pageBtnClass =\n typeof this.pageBtnClass !== 'undefined'\n ? this.pageBtnClass\n : this.config.pageBtnClass;\n\n // base class\n this.itemsPerPage =\n typeof this.itemsPerPage !== 'undefined'\n ? this.itemsPerPage\n : this.config.itemsPerPage;\n this.totalPages = this.calculateTotalPages();\n // this class\n this.pages = this.getPages(this.page, this.totalPages);\n this.inited = true;\n }\n\n writeValue(value: number): void {\n this.page = value;\n this.pages = this.getPages(this.page, this.totalPages);\n }\n\n getText(key: string): string {\n // tslint:disable-next-line:no-any\n return (this as any)[`${key}Text`] || (this as any).config[`${key}Text`];\n }\n\n noPrevious(): boolean {\n return this.page === 1;\n }\n\n noNext(): boolean {\n return this.page === this.totalPages;\n }\n\n registerOnChange(fn: () => {}): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => {}): void {\n this.onTouched = fn;\n }\n\n selectPage(page: number, event?: Event): void {\n if (event) {\n event.preventDefault();\n }\n\n if (!this.disabled) {\n if (event && event.target) {\n // tslint:disable-next-line:no-any\n const target: any = event.target;\n target.blur();\n }\n this.writeValue(page);\n this.onChange(this.page);\n }\n }\n\n // Create page object used in template\n protected makePage(num: number,\n text: string,\n active: boolean): { number: number; text: string; active: boolean } {\n return {text, number: num, active};\n }\n\n protected getPages(currentPage: number, totalPages: number): PagesModel[] {\n const pages: PagesModel[] = [];\n\n // Default page limits\n let startPage = 1;\n let endPage = totalPages;\n const isMaxSized =\n typeof this.maxSize !== 'undefined' && this.maxSize < totalPages;\n\n // recompute if maxSize\n if (isMaxSized) {\n if (this.rotate) {\n // Current page is displayed in the middle of the visible ones\n startPage = Math.max(currentPage - Math.floor(this.maxSize / 2), 1);\n endPage = startPage + this.maxSize - 1;\n\n // Adjust if limit is exceeded\n if (endPage > totalPages) {\n endPage = totalPages;\n startPage = endPage - this.maxSize + 1;\n }\n } else {\n // Visible pages are paginated with maxSize\n startPage =\n (Math.ceil(currentPage / this.maxSize) - 1) * this.maxSize + 1;\n\n // Adjust last page if limit is exceeded\n endPage = Math.min(startPage + this.maxSize - 1, totalPages);\n }\n }\n\n // Add page number links\n for (let num = startPage; num <= endPage; num++) {\n const page = this.makePage(num, num.toString(), num === currentPage);\n pages.push(page);\n }\n\n // Add links to move between page sets\n if (isMaxSized && !this.rotate) {\n if (startPage > 1) {\n const previousPageSet = this.makePage(startPage - 1, '...', false);\n pages.unshift(previousPageSet);\n }\n\n if (endPage < totalPages) {\n const nextPageSet = this.makePage(endPage + 1, '...', false);\n pages.push(nextPageSet);\n }\n }\n\n return pages;\n }\n\n // base class\n protected calculateTotalPages(): number {\n const totalPages =\n this.itemsPerPage < 1\n ? 1\n : Math.ceil(this.totalItems / this.itemsPerPage);\n\n return Math.max(totalPages || 0, 1);\n }\n}\n","import {\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnInit,\n Output,\n Provider, TemplateRef\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { PaginationConfig } from './pagination.config';\nimport { ConfigModel, PagesModel, PaginationLinkContext, PaginationNumberLinkContext } from './models';\n\nexport interface PageChangedEvent {\n itemsPerPage: number;\n page: number;\n}\n\nexport const PAGINATION_CONTROL_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n /* tslint:disable-next-line: no-use-before-declare */\n useExisting: forwardRef(() => PaginationComponent),\n multi: true\n};\n\n@Component({\n selector: 'pagination',\n templateUrl: './pagination.component.html',\n providers: [PAGINATION_CONTROL_VALUE_ACCESSOR]\n})\nexport class PaginationComponent implements ControlValueAccessor, OnInit {\n config: ConfigModel;\n /** if `true` aligns each link to the sides of pager */\n @Input() align: boolean;\n /** limit number for page links in pager */\n @Input() maxSize: number;\n /** if false first and last buttons will be hidden */\n @Input() boundaryLinks: boolean;\n /** if false previous and next buttons will be hidden */\n @Input() directionLinks: boolean;\n // labels\n /** first button text */\n @Input() firstText: string;\n /** previous button text */\n @Input() previousText: string;\n /** next button text */\n @Input() nextText: string;\n /** last button text */\n @Input() lastText: string;\n /** if true current page will in the middle of pages list */\n @Input() rotate: boolean;\n // css\n /** add class to <code><li\\></code> */\n @Input() pageBtnClass: string;\n /** if true pagination component will be disabled */\n @Input() disabled: boolean;\n /** custom template for page link */\n @Input() customPageTemplate: TemplateRef<PaginationNumberLinkContext>;\n /** custom template for next link */\n @Input() customNextTemplate: TemplateRef<PaginationLinkContext>;\n /** custom template for previous link */\n @Input() customPreviousTemplate: TemplateRef<PaginationLinkContext>;\n /** custom template for first link */\n @Input() customFirstTemplate: TemplateRef<PaginationLinkContext>;\n /** custom template for last link */\n @Input() customLastTemplate: TemplateRef<PaginationLinkContext>;\n\n /** fired when total pages count changes, $event:number equals to total pages count */\n @Output() numPages: EventEmitter<number> = new EventEmitter<number>();\n /** fired when page was changed, $event:{page, itemsPerPage} equals to object\n * with current page index and number of items per page\n */\n @Output()\n pageChanged = new EventEmitter<PageChangedEvent>();\n\n /** maximum number of items per page. If value less than 1 will display all items on one page */\n @Input()\n get itemsPerPage(): number {\n return this._itemsPerPage;\n }\n\n set itemsPerPage(v: number) {\n this._itemsPerPage = v;\n this.totalPages = this.calculateTotalPages();\n }\n\n /** total number of items in all pages */\n @Input()\n get totalItems(): number {\n return this._totalItems;\n }\n\n set totalItems(v: number) {\n this._totalItems = v;\n this.totalPages = this.calculateTotalPages();\n }\n\n get totalPages(): number {\n return this._totalPages;\n }\n\n set totalPages(v: number) {\n this._totalPages = v;\n this.numPages.emit(v);\n if (this.inited) {\n this.selectPage(this.page);\n }\n }\n\n set page(value: number) {\n const _previous = this._page;\n this._page = value > this.totalPages ? this.totalPages : value || 1;\n this.changeDetection.markForCheck();\n\n if (_previous === this._page || typeof _previous === 'undefined') {\n return;\n }\n\n this.pageChanged.emit({\n page: this._page,\n itemsPerPage: this.itemsPerPage\n });\n }\n\n get page(): number {\n return this._page;\n }\n\n onChange = Function.prototype;\n onTouched = Function.prototype;\n\n classMap: string;\n pages: PagesModel[];\n\n protected _itemsPerPage: number;\n protected _totalItems: number;\n protected _totalPages: number;\n protected inited = false;\n protected _page = 1;\n\n constructor(\n private elementRef: ElementRef,\n paginationConfig: PaginationConfig,\n private changeDetection: ChangeDetectorRef\n ) {\n this.elementRef = elementRef;\n if (!this.config) {\n this.configureOptions(paginationConfig.main);\n }\n }\n\n configureOptions(config: ConfigModel): void {\n this.config = Object.assign({}, config);\n }\n\n ngOnInit(): void {\n if (typeof window !== 'undefined') {\n this.classMap = this.elementRef.nativeElement.getAttribute('class') || '';\n }\n // watch for maxSize\n this.maxSize =\n typeof this.maxSize !== 'undefined' ? this.maxSize : this.config.maxSize;\n this.rotate =\n typeof this.rotate !== 'undefined' ? this.rotate : this.config.rotate;\n this.boundaryLinks =\n typeof this.boundaryLinks !== 'undefined'\n ? this.boundaryLinks\n : this.config.boundaryLinks;\n this.directionLinks =\n typeof this.directionLinks !== 'undefined'\n ? this.directionLinks\n : this.config.directionLinks;\n this.pageBtnClass =\n typeof this.pageBtnClass !== 'undefined'\n ? this.pageBtnClass\n : this.config.pageBtnClass;\n\n // base class\n this.itemsPerPage =\n typeof this.itemsPerPage !== 'undefined'\n ? this.itemsPerPage\n : this.config.itemsPerPage;\n this.totalPages = this.calculateTotalPages();\n // this class\n this.pages = this.getPages(this.page, this.totalPages);\n this.inited = true;\n }\n\n writeValue(value: number): void {\n this.page = value;\n this.pages = this.getPages(this.page, this.totalPages);\n }\n\n getText(key: string): string {\n // tslint:disable-next-line:no-any\n return (this as any)[`${key}Text`] || (this as any).config[`${key}Text`];\n }\n\n noPrevious(): boolean {\n return this.page === 1;\n }\n\n noNext(): boolean {\n return this.page === this.totalPages;\n }\n\n registerOnChange(fn: () => {}): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => {}): void {\n this.onTouched = fn;\n }\n\n selectPage(page: number, event?: Event): void {\n if (event) {\n event.preventDefault();\n }\n\n if (!this.disabled) {\n if (event && event.target) {\n // tslint:disable-next-line:no-any\n const target: any = event.target;\n target.blur();\n }\n this.writeValue(page);\n this.onChange(this.page);\n }\n }\n\n // Create page object used in template\n protected makePage(\n num: number,\n text: string,\n active: boolean\n ): { number: number; text: string; active: boolean } {\n return { text, number: num, active };\n }\n\n protected getPages(currentPage: number, totalPages: number): PagesModel[] {\n const pages: PagesModel[] = [];\n\n // Default page limits\n let startPage = 1;\n let endPage = totalPages;\n const isMaxSized =\n typeof this.maxSize !== 'undefined' && this.maxSize < totalPages;\n\n // recompute if maxSize\n if (isMaxSized) {\n if (this.rotate) {\n // Current page is displayed in the middle of the visible ones\n startPage = Math.max(currentPage - Math.floor(this.maxSize / 2), 1);\n endPage = startPage + this.maxSize - 1;\n\n // Adjust if limit is exceeded\n if (endPage > totalPages) {\n endPage = totalPages;\n startPage = endPage - this.maxSize + 1;\n }\n } else {\n // Visible pages are paginated with maxSize\n startPage =\n (Math.ceil(currentPage / this.maxSize) - 1) * this.maxSize + 1;\n\n // Adjust last page if limit is exceeded\n endPage = Math.min(startPage + this.maxSize - 1, totalPages);\n }\n }\n\n // Add page number links\n for (let num = startPage; num <= endPage; num++) {\n const page = this.makePage(num, num.toString(), num === currentPage);\n pages.push(page);\n }\n\n // Add links to move between page sets\n if (isMaxSized && !this.rotate) {\n if (startPage > 1) {\n const previousPageSet = this.makePage(startPage - 1, '...', false);\n pages.unshift(previousPageSet);\n }\n\n if (endPage < totalPages) {\n const nextPageSet = this.makePage(endPage + 1, '...', false);\n pages.push(nextPageSet);\n }\n }\n\n return pages;\n }\n\n // base class\n protected calculateTotalPages(): number {\n const totalPages =\n this.itemsPerPage < 1\n ? 1\n : Math.ceil(this.totalItems / this.itemsPerPage);\n\n return Math.max(totalPages || 0, 1);\n }\n// tslint:disable-next-line:max-file-line-count\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule, ModuleWithProviders } from '@angular/core';\nimport { PaginationConfig } from './pagination.config';\n\nimport { PagerComponent } from './pager.component';\nimport { PaginationComponent } from './pagination.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [PagerComponent, PaginationComponent],\n exports: [PagerComponent, PaginationComponent]\n})\nexport class PaginationModule {\n static forRoot(): ModuleWithProviders {\n return { ngModule: PaginationModule, providers: [PaginationConfig] };\n }\n}\n"]}
@@ -31,15 +31,25 @@ if (false) {
31
31
  ConfigModel.prototype.rotate;
32
32
  }
33
33
  /**
34
+ * Contain information about the page
34
35
  * @record
35
36
  */
36
37
  export function PagesModel() { }
37
38
  if (false) {
38
- /** @type {?} */
39
+ /**
40
+ * Text, which is displayed in the link
41
+ * @type {?}
42
+ */
39
43
  PagesModel.prototype.text;
40
- /** @type {?} */
44
+ /**
45
+ * Page number
46
+ * @type {?}
47
+ */
41
48
  PagesModel.prototype.number;
42
- /** @type {?} */
49
+ /**
50
+ * If `true`, then this is the current page
51
+ * @type {?}
52
+ */
43
53
  PagesModel.prototype.active;
44
54
  }
45
55
  /**
@@ -58,4 +68,39 @@ if (false) {
58
68
  /** @type {?} */
59
69
  PagerModel.prototype.align;
60
70
  }
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtYm9vdHN0cmFwL3BhZ2luYXRpb24vIiwic291cmNlcyI6WyJtb2RlbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLGlDQVlDOzs7SUFYQyw0QkFBZ0I7O0lBQ2hCLG9DQUF1Qjs7SUFDdkIscUNBQXdCOztJQUN4QixnQ0FBa0I7O0lBQ2xCLG1DQUFxQjs7SUFDckIsK0JBQWlCOztJQUNqQiw4QkFBZ0I7O0lBQ2hCLCtCQUFpQjs7SUFDakIsbUNBQXFCOztJQUNyQixtQ0FBcUI7O0lBQ3JCLDZCQUFnQjs7Ozs7QUFHbEIsZ0NBSUM7OztJQUhDLDBCQUFhOztJQUNiLDRCQUFlOztJQUNmLDRCQUFnQjs7Ozs7QUFHbEIsZ0NBTUM7OztJQUxDLGtDQUFxQjs7SUFDckIsa0NBQXFCOztJQUNyQiw4QkFBaUI7O0lBQ2pCLGtDQUFxQjs7SUFDckIsMkJBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIENvbmZpZ01vZGVsIHtcbiAgYWxpZ24/OiBib29sZWFuO1xuICBib3VuZGFyeUxpbmtzOiBib29sZWFuO1xuICBkaXJlY3Rpb25MaW5rczogYm9vbGVhbjtcbiAgZmlyc3RUZXh0OiBzdHJpbmc7XG4gIGl0ZW1zUGVyUGFnZTogbnVtYmVyO1xuICBsYXN0VGV4dDogc3RyaW5nO1xuICBtYXhTaXplOiBudW1iZXI7XG4gIG5leHRUZXh0OiBzdHJpbmc7XG4gIHBhZ2VCdG5DbGFzczogc3RyaW5nO1xuICBwcmV2aW91c1RleHQ6IHN0cmluZztcbiAgcm90YXRlOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2VzTW9kZWwge1xuICB0ZXh0OiBzdHJpbmc7XG4gIG51bWJlcjogbnVtYmVyO1xuICBhY3RpdmU6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFnZXJNb2RlbCB7XG4gIGl0ZW1zUGVyUGFnZTogbnVtYmVyO1xuICBwcmV2aW91c1RleHQ6IHN0cmluZztcbiAgbmV4dFRleHQ6IHN0cmluZztcbiAgcGFnZUJ0bkNsYXNzOiBzdHJpbmc7XG4gIGFsaWduOiBib29sZWFuO1xufVxuIl19
71
+ /**
72
+ * A context for the
73
+ * * `customPageTemplate`
74
+ * * `customNextTemplate`
75
+ * * `customPreviousTemplate`
76
+ * * `customFirstTemplate`
77
+ * * `customLastTemplate`
78
+ * inputs for link templates in case you want to override one
79
+ * @record
80
+ */
81
+ export function PaginationLinkContext() { }
82
+ if (false) {
83
+ /**
84
+ * The currently selected page number
85
+ * @type {?}
86
+ */
87
+ PaginationLinkContext.prototype.currentPage;
88
+ /**
89
+ * If `true`, the current link is disabled
90
+ * @type {?}
91
+ */
92
+ PaginationLinkContext.prototype.disabled;
93
+ }
94
+ /**
95
+ * A context for the `pageTemplate` inputs for link template
96
+ * @record
97
+ */
98
+ export function PaginationNumberLinkContext() { }
99
+ if (false) {
100
+ /**
101
+ * Contain the page information
102
+ * @type {?}
103
+ */
104
+ PaginationNumberLinkContext.prototype.$implicit;
105
+ }
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtYm9vdHN0cmFwL3BhZ2luYXRpb24vIiwic291cmNlcyI6WyJtb2RlbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLGlDQVlDOzs7SUFYQyw0QkFBZ0I7O0lBQ2hCLG9DQUF1Qjs7SUFDdkIscUNBQXdCOztJQUN4QixnQ0FBa0I7O0lBQ2xCLG1DQUFxQjs7SUFDckIsK0JBQWlCOztJQUNqQiw4QkFBZ0I7O0lBQ2hCLCtCQUFpQjs7SUFDakIsbUNBQXFCOztJQUNyQixtQ0FBcUI7O0lBQ3JCLDZCQUFnQjs7Ozs7O0FBS2xCLGdDQU9DOzs7Ozs7SUFMQywwQkFBYTs7Ozs7SUFFYiw0QkFBZTs7Ozs7SUFFZiw0QkFBZ0I7Ozs7O0FBR2xCLGdDQU1DOzs7SUFMQyxrQ0FBcUI7O0lBQ3JCLGtDQUFxQjs7SUFDckIsOEJBQWlCOztJQUNqQixrQ0FBcUI7O0lBQ3JCLDJCQUFlOzs7Ozs7Ozs7Ozs7QUFZakIsMkNBS0M7Ozs7OztJQUhDLDRDQUFvQjs7Ozs7SUFFcEIseUNBQWtCOzs7Ozs7QUFNcEIsaURBR0M7Ozs7OztJQURDLGdEQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgQ29uZmlnTW9kZWwge1xuICBhbGlnbj86IGJvb2xlYW47XG4gIGJvdW5kYXJ5TGlua3M6IGJvb2xlYW47XG4gIGRpcmVjdGlvbkxpbmtzOiBib29sZWFuO1xuICBmaXJzdFRleHQ6IHN0cmluZztcbiAgaXRlbXNQZXJQYWdlOiBudW1iZXI7XG4gIGxhc3RUZXh0OiBzdHJpbmc7XG4gIG1heFNpemU6IG51bWJlcjtcbiAgbmV4dFRleHQ6IHN0cmluZztcbiAgcGFnZUJ0bkNsYXNzOiBzdHJpbmc7XG4gIHByZXZpb3VzVGV4dDogc3RyaW5nO1xuICByb3RhdGU6IGJvb2xlYW47XG59XG4vKipcbiAqIENvbnRhaW4gaW5mb3JtYXRpb24gYWJvdXQgdGhlIHBhZ2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYWdlc01vZGVsIHtcbiAgLyoqIFRleHQsIHdoaWNoIGlzIGRpc3BsYXllZCBpbiB0aGUgbGluayAqL1xuICB0ZXh0OiBzdHJpbmc7XG4gIC8qKiBQYWdlIG51bWJlciAqL1xuICBudW1iZXI6IG51bWJlcjtcbiAgLyoqIElmIGB0cnVlYCwgdGhlbiB0aGlzIGlzIHRoZSBjdXJyZW50IHBhZ2UgKi9cbiAgYWN0aXZlOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2VyTW9kZWwge1xuICBpdGVtc1BlclBhZ2U6IG51bWJlcjtcbiAgcHJldmlvdXNUZXh0OiBzdHJpbmc7XG4gIG5leHRUZXh0OiBzdHJpbmc7XG4gIHBhZ2VCdG5DbGFzczogc3RyaW5nO1xuICBhbGlnbjogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBBIGNvbnRleHQgZm9yIHRoZVxuICogKiBgY3VzdG9tUGFnZVRlbXBsYXRlYFxuICogKiBgY3VzdG9tTmV4dFRlbXBsYXRlYFxuICogKiBgY3VzdG9tUHJldmlvdXNUZW1wbGF0ZWBcbiAqICogYGN1c3RvbUZpcnN0VGVtcGxhdGVgXG4gKiAqIGBjdXN0b21MYXN0VGVtcGxhdGVgXG4gKiBpbnB1dHMgZm9yIGxpbmsgdGVtcGxhdGVzIGluIGNhc2UgeW91IHdhbnQgdG8gb3ZlcnJpZGUgb25lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFnaW5hdGlvbkxpbmtDb250ZXh0IHtcbiAgLyoqIFRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgcGFnZSBudW1iZXIgKi9cbiAgY3VycmVudFBhZ2U6IG51bWJlcjtcbiAgLyoqIElmIGB0cnVlYCwgdGhlIGN1cnJlbnQgbGluayBpcyBkaXNhYmxlZCAqL1xuICBkaXNhYmxlZDogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBBIGNvbnRleHQgZm9yIHRoZSBgcGFnZVRlbXBsYXRlYCBpbnB1dHMgZm9yIGxpbmsgdGVtcGxhdGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYWdpbmF0aW9uTnVtYmVyTGlua0NvbnRleHQgZXh0ZW5kcyBQYWdpbmF0aW9uTGlua0NvbnRleHQge1xuICAvKiogQ29udGFpbiB0aGUgcGFnZSBpbmZvcm1hdGlvbiAqL1xuICAkaW1wbGljaXQ6IFBhZ2VzTW9kZWw7XG59XG4iXX0=
@@ -299,7 +299,7 @@ export class PagerComponent {
299
299
  PagerComponent.decorators = [
300
300
  { type: Component, args: [{
301
301
  selector: 'pager',
302
- template: "<ul class=\"pager\">\n <li [class.disabled]=\"noPrevious()\" [class.previous]=\"align\"\n [ngClass]=\"{'pull-right': align, 'float-right': align}\"\n class=\"{{ pageBtnClass }}\">\n <a href (click)=\"selectPage(page - 1, $event)\">{{ getText('previous') }}</a>\n </li>\n <li [class.disabled]=\"noNext()\" [class.next]=\"align\"\n [ngClass]=\"{'pull-right': align, 'float-right': align}\"\n class=\"{{ pageBtnClass }}\">\n <a href (click)=\"selectPage(page + 1, $event)\">{{ getText('next') }}</a>\n </li>\n</ul>\n",
302
+ template: "<ul class=\"pager\">\n <li [class.disabled]=\"noPrevious()\" [class.previous]=\"align\"\n [ngClass]=\"{'pull-left': align, 'float-left': align}\"\n class=\"{{ pageBtnClass }}\">\n <a href (click)=\"selectPage(page - 1, $event)\">{{ getText('previous') }}</a>\n </li>\n <li [class.disabled]=\"noNext()\" [class.next]=\"align\"\n [ngClass]=\"{'pull-right': align, 'float-right': align}\"\n class=\"{{ pageBtnClass }}\">\n <a href (click)=\"selectPage(page + 1, $event)\">{{ getText('next') }}</a>\n </li>\n</ul>\n",
303
303
  providers: [PAGER_CONTROL_VALUE_ACCESSOR]
304
304
  }] }
305
305
  ];
@@ -439,4 +439,4 @@ if (false) {
439
439
  */
440
440
  PagerComponent.prototype.changeDetection;
441
441
  }
442
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWJvb3RzdHJhcC9wYWdpbmF0aW9uLyIsInNvdXJjZXMiOlsicGFnZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBRUwsTUFBTSxFQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd6RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFJdkQsTUFBTSxPQUFPLDRCQUE0QixHQUFhO0lBQ3BELE9BQU8sRUFBRSxpQkFBaUI7O0lBRTFCLFdBQVcsRUFBRSxVQUFVOzs7SUFBQyxHQUFHLEVBQUUsQ0FBQyxjQUFjLEVBQUM7SUFDN0MsS0FBSyxFQUFFLElBQUk7Q0FDWjtBQU9ELE1BQU0sT0FBTyxjQUFjOzs7Ozs7SUFxR3pCLFlBQW9CLFVBQXNCLEVBQzlCLGdCQUFrQyxFQUMxQixlQUFrQztRQUZsQyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBRXRCLG9CQUFlLEdBQWYsZUFBZSxDQUFtQjs7OztRQTFFNUMsYUFBUSxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDOzs7OztRQUt0RSxnQkFBVyxHQUFtQyxJQUFJLFlBQVksRUFBb0IsQ0FBQztRQXVEbkYsYUFBUSxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUM7UUFDOUIsY0FBUyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUM7UUFRckIsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUNmLFVBQUssR0FBRyxDQUFDLENBQUM7UUFLbEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDaEIsSUFBSSxDQUFDLGdCQUFnQixDQUNuQixNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQ2pFLENBQUM7U0FDSDtJQUNILENBQUM7Ozs7O0lBekVELElBQ0ksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDOzs7OztJQUVELElBQUksWUFBWSxDQUFDLENBQVM7UUFDeEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUMvQyxDQUFDOzs7OztJQUdELElBQ0ksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDOzs7OztJQUVELElBQUksVUFBVSxDQUFDLENBQVM7UUFDdEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUMvQyxDQUFDOzs7O0lBRUQsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7Ozs7O0lBRUQsSUFBSSxVQUFVLENBQUMsQ0FBUztRQUN0QixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0QixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDZixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM1QjtJQUNILENBQUM7Ozs7O0lBRUQsSUFBSSxJQUFJLENBQUMsS0FBYTs7Y0FDZCxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUs7UUFDNUIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRXBDLElBQUksU0FBUyxLQUFLLElBQUksQ0FBQyxLQUFLLElBQUksT0FBTyxTQUFTLEtBQUssV0FBVyxFQUFFO1lBQ2hFLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO1lBQ3BCLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSztZQUNoQixZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7U0FDaEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7OztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDOzs7OztJQXlCRCxnQkFBZ0IsQ0FBQyxNQUFtQjtRQUNsQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzFDLENBQUM7Ozs7SUFFRCxRQUFRO1FBQ04sSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLEVBQUU7WUFDakMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1NBQzNFO1FBQ0Qsb0JBQW9CO1FBQ3BCLElBQUksQ0FBQyxPQUFPO1lBQ1YsT0FBTyxJQUFJLENBQUMsT0FBTyxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7UUFDM0UsSUFBSSxDQUFDLE1BQU07WUFDVCxPQUFPLElBQUksQ0FBQyxNQUFNLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUN4RSxJQUFJLENBQUMsYUFBYTtZQUNoQixPQUFPLElBQUksQ0FBQyxhQUFhLEtBQUssV0FBVztnQkFDdkMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhO2dCQUNwQixDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUM7UUFDaEMsSUFBSSxDQUFDLGNBQWM7WUFDakIsT0FBTyxJQUFJLENBQUMsY0FBYyxLQUFLLFdBQVc7Z0JBQ3hDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYztnQkFDckIsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxZQUFZO1lBQ2YsT0FBTyxJQUFJLENBQUMsWUFBWSxLQUFLLFdBQVc7Z0JBQ3RDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWTtnQkFDbkIsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDO1FBRS9CLGFBQWE7UUFDYixJQUFJLENBQUMsWUFBWTtZQUNmLE9BQU8sSUFBSSxDQUFDLFlBQVksS0FBSyxXQUFXO2dCQUN0QyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVk7Z0JBQ25CLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQztRQUMvQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzdDLGFBQWE7UUFDYixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFDckIsQ0FBQzs7Ozs7SUFFRCxVQUFVLENBQUMsS0FBYTtRQUN0QixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztRQUNsQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDekQsQ0FBQzs7Ozs7SUFFRCxPQUFPLENBQUMsR0FBVztRQUNqQixrQ0FBa0M7UUFDbEMsT0FBTyxDQUFDLG1CQUFBLElBQUksRUFBTyxDQUFDLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsbUJBQUEsSUFBSSxFQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDO0lBQzNFLENBQUM7Ozs7SUFFRCxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQztJQUN6QixDQUFDOzs7O0lBRUQsTUFBTTtRQUNKLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3ZDLENBQUM7Ozs7O0lBRUQsZ0JBQWdCLENBQUMsRUFBWTtRQUMzQixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNyQixDQUFDOzs7OztJQUVELGlCQUFpQixDQUFDLEVBQVk7UUFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQzs7Ozs7O0lBRUQsVUFBVSxDQUFDLElBQVksRUFBRSxLQUFhO1FBQ3BDLElBQUksS0FBSyxFQUFFO1lBQ1QsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQ3hCO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDbEIsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRTs7O3NCQUVuQixNQUFNLEdBQVEsS0FBSyxDQUFDLE1BQU07Z0JBQ2hDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUNmO1lBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN0QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMxQjtJQUNILENBQUM7Ozs7Ozs7OztJQUdTLFFBQVEsQ0FBQyxHQUFXLEVBQ1gsSUFBWSxFQUNaLE1BQWU7UUFDaEMsT0FBTyxFQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBQyxDQUFDO0lBQ3JDLENBQUM7Ozs7Ozs7SUFFUyxRQUFRLENBQUMsV0FBbUIsRUFBRSxVQUFrQjs7Y0FDbEQsS0FBSyxHQUFpQixFQUFFOzs7WUFHMUIsU0FBUyxHQUFHLENBQUM7O1lBQ2IsT0FBTyxHQUFHLFVBQVU7O2NBQ2xCLFVBQVUsR0FDZCxPQUFPLElBQUksQ0FBQyxPQUFPLEtBQUssV0FBVyxJQUFJLElBQUksQ0FBQyxPQUFPLEdBQUcsVUFBVTtRQUVsRSx1QkFBdUI7UUFDdkIsSUFBSSxVQUFVLEVBQUU7WUFDZCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ2YsOERBQThEO2dCQUM5RCxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNwRSxPQUFPLEdBQUcsU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO2dCQUV2Qyw4QkFBOEI7Z0JBQzlCLElBQUksT0FBTyxHQUFHLFVBQVUsRUFBRTtvQkFDeEIsT0FBTyxHQUFHLFVBQVUsQ0FBQztvQkFDckIsU0FBUyxHQUFHLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztpQkFDeEM7YUFDRjtpQkFBTTtnQkFDTCwyQ0FBMkM7Z0JBQzNDLFNBQVM7b0JBQ1AsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7Z0JBRWpFLHdDQUF3QztnQkFDeEMsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO2FBQzlEO1NBQ0Y7UUFFRCx3QkFBd0I7UUFDeEIsS0FBSyxJQUFJLEdBQUcsR0FBRyxTQUFTLEVBQUUsR0FBRyxJQUFJLE9BQU8sRUFBRSxHQUFHLEVBQUUsRUFBRTs7a0JBQ3pDLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsUUFBUSxFQUFFLEVBQUUsR0FBRyxLQUFLLFdBQVcsQ0FBQztZQUNwRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2xCO1FBRUQsc0NBQXNDO1FBQ3RDLElBQUksVUFBVSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUM5QixJQUFJLFNBQVMsR0FBRyxDQUFDLEVBQUU7O3NCQUNYLGVBQWUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQztnQkFDbEUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQzthQUNoQztZQUVELElBQUksT0FBTyxHQUFHLFVBQVUsRUFBRTs7c0JBQ2xCLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQztnQkFDNUQsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUN6QjtTQUNGO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzs7Ozs7SUFHUyxtQkFBbUI7O2NBQ3JCLFVBQVUsR0FDZCxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUM7WUFDbkIsQ0FBQyxDQUFDLENBQUM7WUFDSCxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFFcEQsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsQ0FBQzs7O1lBeFFGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsT0FBTztnQkFDakIsMmlCQUFxQztnQkFDckMsU0FBUyxFQUFFLENBQUMsNEJBQTRCLENBQUM7YUFDMUM7Ozs7WUExQkMsVUFBVTtZQVdILGdCQUFnQjtZQWJ2QixpQkFBaUI7OztvQkFnQ2hCLEtBQUs7c0JBRUwsS0FBSzs0QkFFTCxLQUFLOzZCQUVMLEtBQUs7d0JBR0wsS0FBSzsyQkFFTCxLQUFLO3VCQUVMLEtBQUs7dUJBRUwsS0FBSztxQkFFTCxLQUFLOzJCQUdMLEtBQUs7dUJBR0wsS0FBSzt1QkFHTCxNQUFNOzBCQUlOLE1BQU07MkJBSU4sS0FBSzt5QkFXTCxLQUFLOzs7O0lBL0NOLGdDQUFvQjs7Ozs7SUFFcEIsK0JBQXdCOzs7OztJQUV4QixpQ0FBeUI7Ozs7O0lBRXpCLHVDQUFnQzs7Ozs7SUFFaEMsd0NBQWlDOzs7OztJQUdqQyxtQ0FBMkI7Ozs7O0lBRTNCLHNDQUE4Qjs7Ozs7SUFFOUIsa0NBQTBCOzs7OztJQUUxQixrQ0FBMEI7Ozs7O0lBRTFCLGdDQUF5Qjs7Ozs7SUFHekIsc0NBQThCOzs7OztJQUc5QixrQ0FBMkI7Ozs7O0lBRzNCLGtDQUFzRTs7Ozs7O0lBSXRFLHFDQUNtRjs7SUF1RG5GLGtDQUE4Qjs7SUFDOUIsbUNBQStCOztJQUUvQixrQ0FBaUI7O0lBQ2pCLCtCQUFvQjs7Ozs7SUFFcEIsdUNBQWdDOzs7OztJQUNoQyxxQ0FBOEI7Ozs7O0lBQzlCLHFDQUE4Qjs7Ozs7SUFDOUIsZ0NBQXlCOzs7OztJQUN6QiwrQkFBb0I7Ozs7O0lBRVIsb0NBQThCOzs7OztJQUU5Qix5Q0FBMEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUHJvdmlkZXJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IFBhZ2VDaGFuZ2VkRXZlbnQgfSBmcm9tICcuL3BhZ2luYXRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IFBhZ2luYXRpb25Db25maWcgfSBmcm9tICcuL3BhZ2luYXRpb24uY29uZmlnJztcblxuaW1wb3J0IHsgQ29uZmlnTW9kZWwsIFBhZ2VzTW9kZWwgfSBmcm9tICcuL21vZGVscyc7XG5cbmV4cG9ydCBjb25zdCBQQUdFUl9DT05UUk9MX1ZBTFVFX0FDQ0VTU09SOiBQcm92aWRlciA9IHtcbiAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tdXNlLWJlZm9yZS1kZWNsYXJlICovXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFBhZ2VyQ29tcG9uZW50KSxcbiAgbXVsdGk6IHRydWVcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3BhZ2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BhZ2VyLmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbUEFHRVJfQ09OVFJPTF9WQUxVRV9BQ0NFU1NPUl1cbn0pXG5leHBvcnQgY2xhc3MgUGFnZXJDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0IHtcbiAgY29uZmlnOiBDb25maWdNb2RlbDtcbiAgLyoqIGlmIGB0cnVlYCBhbGlnbnMgZWFjaCBsaW5rIHRvIHRoZSBzaWRlcyBvZiBwYWdlciAqL1xuICBASW5wdXQoKSBhbGlnbjogYm9vbGVhbjtcbiAgLyoqIGxpbWl0IG51bWJlciBmb3IgcGFnZSBsaW5rcyBpbiBwYWdlciAqL1xuICBASW5wdXQoKSBtYXhTaXplOiBudW1iZXI7XG4gIC8qKiBpZiBmYWxzZSBmaXJzdCBhbmQgbGFzdCBidXR0b25zIHdpbGwgYmUgaGlkZGVuICovXG4gIEBJbnB1dCgpIGJvdW5kYXJ5TGlua3M6IGJvb2xlYW47XG4gIC8qKiBpZiBmYWxzZSBwcmV2aW91cyBhbmQgbmV4dCBidXR0b25zIHdpbGwgYmUgaGlkZGVuICovXG4gIEBJbnB1dCgpIGRpcmVjdGlvbkxpbmtzOiBib29sZWFuO1xuICAvLyBsYWJlbHNcbiAgLyoqIGZpcnN0IGJ1dHRvbiB0ZXh0ICovXG4gIEBJbnB1dCgpIGZpcnN0VGV4dDogc3RyaW5nO1xuICAvKiogcHJldmlvdXMgYnV0dG9uIHRleHQgKi9cbiAgQElucHV0KCkgcHJldmlvdXNUZXh0OiBzdHJpbmc7XG4gIC8qKiBuZXh0IGJ1dHRvbiB0ZXh0ICovXG4gIEBJbnB1dCgpIG5leHRUZXh0OiBzdHJpbmc7XG4gIC8qKiBsYXN0IGJ1dHRvbiB0ZXh0ICovXG4gIEBJbnB1dCgpIGxhc3RUZXh0OiBzdHJpbmc7XG4gIC8qKiBpZiB0cnVlIGN1cnJlbnQgcGFnZSB3aWxsIGluIHRoZSBtaWRkbGUgb2YgcGFnZXMgbGlzdCAqL1xuICBASW5wdXQoKSByb3RhdGU6IGJvb2xlYW47XG4gIC8vIGNzc1xuICAvKiogYWRkIGNsYXNzIHRvIDxjb2RlPjxsaVxcPjwvY29kZT4gKi9cbiAgQElucHV0KCkgcGFnZUJ0bkNsYXNzOiBzdHJpbmc7XG5cbiAgLyoqIGlmIHRydWUgcGFnaW5hdGlvbiBjb21wb25lbnQgd2lsbCBiZSBkaXNhYmxlZCAqL1xuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcblxuICAvKiogZmlyZWQgd2hlbiB0b3RhbCBwYWdlcyBjb3VudCBjaGFuZ2VzLCAkZXZlbnQ6bnVtYmVyIGVxdWFscyB0byB0b3RhbCBwYWdlcyBjb3VudCAqL1xuICBAT3V0cHV0KCkgbnVtUGFnZXM6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIC8qKiBmaXJlZCB3aGVuIHBhZ2Ugd2FzIGNoYW5nZWQsICRldmVudDp7cGFnZSwgaXRlbXNQZXJQYWdlfSBlcXVhbHMgdG9cbiAgICogb2JqZWN0IHdpdGggY3VycmVudCBwYWdlIGluZGV4IGFuZCBudW1iZXIgb2YgaXRlbXMgcGVyIHBhZ2VcbiAgICovXG4gIEBPdXRwdXQoKVxuICBwYWdlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPFBhZ2VDaGFuZ2VkRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxQYWdlQ2hhbmdlZEV2ZW50PigpO1xuXG4gIC8qKiBtYXhpbXVtIG51bWJlciBvZiBpdGVtcyBwZXIgcGFnZS4gSWYgdmFsdWUgbGVzcyB0aGFuIDEgd2lsbCBkaXNwbGF5IGFsbCBpdGVtcyBvbiBvbmUgcGFnZSAqL1xuICBASW5wdXQoKVxuICBnZXQgaXRlbXNQZXJQYWdlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1zUGVyUGFnZTtcbiAgfVxuXG4gIHNldCBpdGVtc1BlclBhZ2UodjogbnVtYmVyKSB7XG4gICAgdGhpcy5faXRlbXNQZXJQYWdlID0gdjtcbiAgICB0aGlzLnRvdGFsUGFnZXMgPSB0aGlzLmNhbGN1bGF0ZVRvdGFsUGFnZXMoKTtcbiAgfVxuXG4gIC8qKiB0b3RhbCBudW1iZXIgb2YgaXRlbXMgaW4gYWxsIHBhZ2VzICovXG4gIEBJbnB1dCgpXG4gIGdldCB0b3RhbEl0ZW1zKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3RvdGFsSXRlbXM7XG4gIH1cblxuICBzZXQgdG90YWxJdGVtcyh2OiBudW1iZXIpIHtcbiAgICB0aGlzLl90b3RhbEl0ZW1zID0gdjtcbiAgICB0aGlzLnRvdGFsUGFnZXMgPSB0aGlzLmNhbGN1bGF0ZVRvdGFsUGFnZXMoKTtcbiAgfVxuXG4gIGdldCB0b3RhbFBhZ2VzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3RvdGFsUGFnZXM7XG4gIH1cblxuICBzZXQgdG90YWxQYWdlcyh2OiBudW1iZXIpIHtcbiAgICB0aGlzLl90b3RhbFBhZ2VzID0gdjtcbiAgICB0aGlzLm51bVBhZ2VzLmVtaXQodik7XG4gICAgaWYgKHRoaXMuaW5pdGVkKSB7XG4gICAgICB0aGlzLnNlbGVjdFBhZ2UodGhpcy5wYWdlKTtcbiAgICB9XG4gIH1cblxuICBzZXQgcGFnZSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgY29uc3QgX3ByZXZpb3VzID0gdGhpcy5fcGFnZTtcbiAgICB0aGlzLl9wYWdlID0gdmFsdWUgPiB0aGlzLnRvdGFsUGFnZXMgPyB0aGlzLnRvdGFsUGFnZXMgOiB2YWx1ZSB8fCAxO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0aW9uLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgaWYgKF9wcmV2aW91cyA9PT0gdGhpcy5fcGFnZSB8fCB0eXBlb2YgX3ByZXZpb3VzID09PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucGFnZUNoYW5nZWQuZW1pdCh7XG4gICAgICBwYWdlOiB0aGlzLl9wYWdlLFxuICAgICAgaXRlbXNQZXJQYWdlOiB0aGlzLml0ZW1zUGVyUGFnZVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0IHBhZ2UoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fcGFnZTtcbiAgfVxuXG4gIG9uQ2hhbmdlID0gRnVuY3Rpb24ucHJvdG90eXBlO1xuICBvblRvdWNoZWQgPSBGdW5jdGlvbi5wcm90b3R5cGU7XG5cbiAgY2xhc3NNYXA6IHN0cmluZztcbiAgcGFnZXM6IFBhZ2VzTW9kZWxbXTtcblxuICBwcm90ZWN0ZWQgX2l0ZW1zUGVyUGFnZTogbnVtYmVyO1xuICBwcm90ZWN0ZWQgX3RvdGFsSXRlbXM6IG51bWJlcjtcbiAgcHJvdGVjdGVkIF90b3RhbFBhZ2VzOiBudW1iZXI7XG4gIHByb3RlY3RlZCBpbml0ZWQgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIF9wYWdlID0gMTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgICAgICAgIHBhZ2luYXRpb25Db25maWc6IFBhZ2luYXRpb25Db25maWcsXG4gICAgICAgICAgICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgIHRoaXMuZWxlbWVudFJlZiA9IGVsZW1lbnRSZWY7XG4gICAgaWYgKCF0aGlzLmNvbmZpZykge1xuICAgICAgdGhpcy5jb25maWd1cmVPcHRpb25zKFxuICAgICAgICBPYmplY3QuYXNzaWduKHt9LCBwYWdpbmF0aW9uQ29uZmlnLm1haW4sIHBhZ2luYXRpb25Db25maWcucGFnZXIpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGNvbmZpZ3VyZU9wdGlvbnMoY29uZmlnOiBDb25maWdNb2RlbCk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlnID0gT2JqZWN0LmFzc2lnbih7fSwgY29uZmlnKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgdGhpcy5jbGFzc01hcCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgnY2xhc3MnKSB8fCAnJztcbiAgICB9XG4gICAgLy8gd2F0Y2ggZm9yIG1heFNpemVcbiAgICB0aGlzLm1heFNpemUgPVxuICAgICAgdHlwZW9mIHRoaXMubWF4U2l6ZSAhPT0gJ3VuZGVmaW5lZCcgPyB0aGlzLm1heFNpemUgOiB0aGlzLmNvbmZpZy5tYXhTaXplO1xuICAgIHRoaXMucm90YXRlID1cbiAgICAgIHR5cGVvZiB0aGlzLnJvdGF0ZSAhPT0gJ3VuZGVmaW5lZCcgPyB0aGlzLnJvdGF0ZSA6IHRoaXMuY29uZmlnLnJvdGF0ZTtcbiAgICB0aGlzLmJvdW5kYXJ5TGlua3MgPVxuICAgICAgdHlwZW9mIHRoaXMuYm91bmRhcnlMaW5rcyAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgPyB0aGlzLmJvdW5kYXJ5TGlua3NcbiAgICAgICAgOiB0aGlzLmNvbmZpZy5ib3VuZGFyeUxpbmtzO1xuICAgIHRoaXMuZGlyZWN0aW9uTGlua3MgPVxuICAgICAgdHlwZW9mIHRoaXMuZGlyZWN0aW9uTGlua3MgIT09ICd1bmRlZmluZWQnXG4gICAgICAgID8gdGhpcy5kaXJlY3Rpb25MaW5rc1xuICAgICAgICA6IHRoaXMuY29uZmlnLmRpcmVjdGlvbkxpbmtzO1xuICAgIHRoaXMucGFnZUJ0bkNsYXNzID1cbiAgICAgIHR5cGVvZiB0aGlzLnBhZ2VCdG5DbGFzcyAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgPyB0aGlzLnBhZ2VCdG5DbGFzc1xuICAgICAgICA6IHRoaXMuY29uZmlnLnBhZ2VCdG5DbGFzcztcblxuICAgIC8vIGJhc2UgY2xhc3NcbiAgICB0aGlzLml0ZW1zUGVyUGFnZSA9XG4gICAgICB0eXBlb2YgdGhpcy5pdGVtc1BlclBhZ2UgIT09ICd1bmRlZmluZWQnXG4gICAgICAgID8gdGhpcy5pdGVtc1BlclBhZ2VcbiAgICAgICAgOiB0aGlzLmNvbmZpZy5pdGVtc1BlclBhZ2U7XG4gICAgdGhpcy50b3RhbFBhZ2VzID0gdGhpcy5jYWxjdWxhdGVUb3RhbFBhZ2VzKCk7XG4gICAgLy8gdGhpcyBjbGFzc1xuICAgIHRoaXMucGFnZXMgPSB0aGlzLmdldFBhZ2VzKHRoaXMucGFnZSwgdGhpcy50b3RhbFBhZ2VzKTtcbiAgICB0aGlzLmluaXRlZCA9IHRydWU7XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnBhZ2UgPSB2YWx1ZTtcbiAgICB0aGlzLnBhZ2VzID0gdGhpcy5nZXRQYWdlcyh0aGlzLnBhZ2UsIHRoaXMudG90YWxQYWdlcyk7XG4gIH1cblxuICBnZXRUZXh0KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55XG4gICAgcmV0dXJuICh0aGlzIGFzIGFueSlbYCR7a2V5fVRleHRgXSB8fCAodGhpcyBhcyBhbnkpLmNvbmZpZ1tgJHtrZXl9VGV4dGBdO1xuICB9XG5cbiAgbm9QcmV2aW91cygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5wYWdlID09PSAxO1xuICB9XG5cbiAgbm9OZXh0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnBhZ2UgPT09IHRoaXMudG90YWxQYWdlcztcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICgpID0+IHt9KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHt9KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHNlbGVjdFBhZ2UocGFnZTogbnVtYmVyLCBldmVudD86IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgaWYgKGV2ZW50ICYmIGV2ZW50LnRhcmdldCkge1xuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55XG4gICAgICAgIGNvbnN0IHRhcmdldDogYW55ID0gZXZlbnQudGFyZ2V0O1xuICAgICAgICB0YXJnZXQuYmx1cigpO1xuICAgICAgfVxuICAgICAgdGhpcy53cml0ZVZhbHVlKHBhZ2UpO1xuICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLnBhZ2UpO1xuICAgIH1cbiAgfVxuXG4gIC8vIENyZWF0ZSBwYWdlIG9iamVjdCB1c2VkIGluIHRlbXBsYXRlXG4gIHByb3RlY3RlZCBtYWtlUGFnZShudW06IG51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgIHRleHQ6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogYm9vbGVhbik6IHsgbnVtYmVyOiBudW1iZXI7IHRleHQ6IHN0cmluZzsgYWN0aXZlOiBib29sZWFuIH0ge1xuICAgIHJldHVybiB7dGV4dCwgbnVtYmVyOiBudW0sIGFjdGl2ZX07XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0UGFnZXMoY3VycmVudFBhZ2U6IG51bWJlciwgdG90YWxQYWdlczogbnVtYmVyKTogUGFnZXNNb2RlbFtdIHtcbiAgICBjb25zdCBwYWdlczogUGFnZXNNb2RlbFtdID0gW107XG5cbiAgICAvLyBEZWZhdWx0IHBhZ2UgbGltaXRzXG4gICAgbGV0IHN0YXJ0UGFnZSA9IDE7XG4gICAgbGV0IGVuZFBhZ2UgPSB0b3RhbFBhZ2VzO1xuICAgIGNvbnN0IGlzTWF4U2l6ZWQgPVxuICAgICAgdHlwZW9mIHRoaXMubWF4U2l6ZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5tYXhTaXplIDwgdG90YWxQYWdlcztcblxuICAgIC8vIHJlY29tcHV0ZSBpZiBtYXhTaXplXG4gICAgaWYgKGlzTWF4U2l6ZWQpIHtcbiAgICAgIGlmICh0aGlzLnJvdGF0ZSkge1xuICAgICAgICAvLyBDdXJyZW50IHBhZ2UgaXMgZGlzcGxheWVkIGluIHRoZSBtaWRkbGUgb2YgdGhlIHZpc2libGUgb25lc1xuICAgICAgICBzdGFydFBhZ2UgPSBNYXRoLm1heChjdXJyZW50UGFnZSAtIE1hdGguZmxvb3IodGhpcy5tYXhTaXplIC8gMiksIDEpO1xuICAgICAgICBlbmRQYWdlID0gc3RhcnRQYWdlICsgdGhpcy5tYXhTaXplIC0gMTtcblxuICAgICAgICAvLyBBZGp1c3QgaWYgbGltaXQgaXMgZXhjZWVkZWRcbiAgICAgICAgaWYgKGVuZFBhZ2UgPiB0b3RhbFBhZ2VzKSB7XG4gICAgICAgICAgZW5kUGFnZSA9IHRvdGFsUGFnZXM7XG4gICAgICAgICAgc3RhcnRQYWdlID0gZW5kUGFnZSAtIHRoaXMubWF4U2l6ZSArIDE7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFZpc2libGUgcGFnZXMgYXJlIHBhZ2luYXRlZCB3aXRoIG1heFNpemVcbiAgICAgICAgc3RhcnRQYWdlID1cbiAgICAgICAgICAoTWF0aC5jZWlsKGN1cnJlbnRQYWdlIC8gdGhpcy5tYXhTaXplKSAtIDEpICogdGhpcy5tYXhTaXplICsgMTtcblxuICAgICAgICAvLyBBZGp1c3QgbGFzdCBwYWdlIGlmIGxpbWl0IGlzIGV4Y2VlZGVkXG4gICAgICAgIGVuZFBhZ2UgPSBNYXRoLm1pbihzdGFydFBhZ2UgKyB0aGlzLm1heFNpemUgLSAxLCB0b3RhbFBhZ2VzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBZGQgcGFnZSBudW1iZXIgbGlua3NcbiAgICBmb3IgKGxldCBudW0gPSBzdGFydFBhZ2U7IG51bSA8PSBlbmRQYWdlOyBudW0rKykge1xuICAgICAgY29uc3QgcGFnZSA9IHRoaXMubWFrZVBhZ2UobnVtLCBudW0udG9TdHJpbmcoKSwgbnVtID09PSBjdXJyZW50UGFnZSk7XG4gICAgICBwYWdlcy5wdXNoKHBhZ2UpO1xuICAgIH1cblxuICAgIC8vIEFkZCBsaW5rcyB0byBtb3ZlIGJldHdlZW4gcGFnZSBzZXRzXG4gICAgaWYgKGlzTWF4U2l6ZWQgJiYgIXRoaXMucm90YXRlKSB7XG4gICAgICBpZiAoc3RhcnRQYWdlID4gMSkge1xuICAgICAgICBjb25zdCBwcmV2aW91c1BhZ2VTZXQgPSB0aGlzLm1ha2VQYWdlKHN0YXJ0UGFnZSAtIDEsICcuLi4nLCBmYWxzZSk7XG4gICAgICAgIHBhZ2VzLnVuc2hpZnQocHJldmlvdXNQYWdlU2V0KTtcbiAgICAgIH1cblxuICAgICAgaWYgKGVuZFBhZ2UgPCB0b3RhbFBhZ2VzKSB7XG4gICAgICAgIGNvbnN0IG5leHRQYWdlU2V0ID0gdGhpcy5tYWtlUGFnZShlbmRQYWdlICsgMSwgJy4uLicsIGZhbHNlKTtcbiAgICAgICAgcGFnZXMucHVzaChuZXh0UGFnZVNldCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhZ2VzO1xuICB9XG5cbiAgLy8gYmFzZSBjbGFzc1xuICBwcm90ZWN0ZWQgY2FsY3VsYXRlVG90YWxQYWdlcygpOiBudW1iZXIge1xuICAgIGNvbnN0IHRvdGFsUGFnZXMgPVxuICAgICAgdGhpcy5pdGVtc1BlclBhZ2UgPCAxXG4gICAgICAgID8gMVxuICAgICAgICA6IE1hdGguY2VpbCh0aGlzLnRvdGFsSXRlbXMgLyB0aGlzLml0ZW1zUGVyUGFnZSk7XG5cbiAgICByZXR1cm4gTWF0aC5tYXgodG90YWxQYWdlcyB8fCAwLCAxKTtcbiAgfVxufVxuIl19
442
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWJvb3RzdHJhcC9wYWdpbmF0aW9uLyIsInNvdXJjZXMiOlsicGFnZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBRUwsTUFBTSxFQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd6RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFJdkQsTUFBTSxPQUFPLDRCQUE0QixHQUFhO0lBQ3BELE9BQU8sRUFBRSxpQkFBaUI7O0lBRTFCLFdBQVcsRUFBRSxVQUFVOzs7SUFBQyxHQUFHLEVBQUUsQ0FBQyxjQUFjLEVBQUM7SUFDN0MsS0FBSyxFQUFFLElBQUk7Q0FDWjtBQU9ELE1BQU0sT0FBTyxjQUFjOzs7Ozs7SUFxR3pCLFlBQW9CLFVBQXNCLEVBQzlCLGdCQUFrQyxFQUMxQixlQUFrQztRQUZsQyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBRXRCLG9CQUFlLEdBQWYsZUFBZSxDQUFtQjs7OztRQTFFNUMsYUFBUSxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDOzs7OztRQUt0RSxnQkFBVyxHQUFtQyxJQUFJLFlBQVksRUFBb0IsQ0FBQztRQXVEbkYsYUFBUSxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUM7UUFDOUIsY0FBUyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUM7UUFRckIsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUNmLFVBQUssR0FBRyxDQUFDLENBQUM7UUFLbEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDaEIsSUFBSSxDQUFDLGdCQUFnQixDQUNuQixNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQ2pFLENBQUM7U0FDSDtJQUNILENBQUM7Ozs7O0lBekVELElBQ0ksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDOzs7OztJQUVELElBQUksWUFBWSxDQUFDLENBQVM7UUFDeEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUMvQyxDQUFDOzs7OztJQUdELElBQ0ksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDOzs7OztJQUVELElBQUksVUFBVSxDQUFDLENBQVM7UUFDdEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUMvQyxDQUFDOzs7O0lBRUQsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7Ozs7O0lBRUQsSUFBSSxVQUFVLENBQUMsQ0FBUztRQUN0QixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0QixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDZixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM1QjtJQUNILENBQUM7Ozs7O0lBRUQsSUFBSSxJQUFJLENBQUMsS0FBYTs7Y0FDZCxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUs7UUFDNUIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRXBDLElBQUksU0FBUyxLQUFLLElBQUksQ0FBQyxLQUFLLElBQUksT0FBTyxTQUFTLEtBQUssV0FBVyxFQUFFO1lBQ2hFLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO1lBQ3BCLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSztZQUNoQixZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7U0FDaEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7OztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDOzs7OztJQXlCRCxnQkFBZ0IsQ0FBQyxNQUFtQjtRQUNsQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzFDLENBQUM7Ozs7SUFFRCxRQUFRO1FBQ04sSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLEVBQUU7WUFDakMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1NBQzNFO1FBQ0Qsb0JBQW9CO1FBQ3BCLElBQUksQ0FBQyxPQUFPO1lBQ1YsT0FBTyxJQUFJLENBQUMsT0FBTyxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7UUFDM0UsSUFBSSxDQUFDLE1BQU07WUFDVCxPQUFPLElBQUksQ0FBQyxNQUFNLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUN4RSxJQUFJLENBQUMsYUFBYTtZQUNoQixPQUFPLElBQUksQ0FBQyxhQUFhLEtBQUssV0FBVztnQkFDdkMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhO2dCQUNwQixDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUM7UUFDaEMsSUFBSSxDQUFDLGNBQWM7WUFDakIsT0FBTyxJQUFJLENBQUMsY0FBYyxLQUFLLFdBQVc7Z0JBQ3hDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYztnQkFDckIsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxZQUFZO1lBQ2YsT0FBTyxJQUFJLENBQUMsWUFBWSxLQUFLLFdBQVc7Z0JBQ3RDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWTtnQkFDbkIsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDO1FBRS9CLGFBQWE7UUFDYixJQUFJLENBQUMsWUFBWTtZQUNmLE9BQU8sSUFBSSxDQUFDLFlBQVksS0FBSyxXQUFXO2dCQUN0QyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVk7Z0JBQ25CLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQztRQUMvQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzdDLGFBQWE7UUFDYixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFDckIsQ0FBQzs7Ozs7SUFFRCxVQUFVLENBQUMsS0FBYTtRQUN0QixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztRQUNsQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDekQsQ0FBQzs7Ozs7SUFFRCxPQUFPLENBQUMsR0FBVztRQUNqQixrQ0FBa0M7UUFDbEMsT0FBTyxDQUFDLG1CQUFBLElBQUksRUFBTyxDQUFDLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsbUJBQUEsSUFBSSxFQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDO0lBQzNFLENBQUM7Ozs7SUFFRCxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQztJQUN6QixDQUFDOzs7O0lBRUQsTUFBTTtRQUNKLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3ZDLENBQUM7Ozs7O0lBRUQsZ0JBQWdCLENBQUMsRUFBWTtRQUMzQixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNyQixDQUFDOzs7OztJQUVELGlCQUFpQixDQUFDLEVBQVk7UUFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQzs7Ozs7O0lBRUQsVUFBVSxDQUFDLElBQVksRUFBRSxLQUFhO1FBQ3BDLElBQUksS0FBSyxFQUFFO1lBQ1QsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQ3hCO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDbEIsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRTs7O3NCQUVuQixNQUFNLEdBQVEsS0FBSyxDQUFDLE1BQU07Z0JBQ2hDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUNmO1lBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN0QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMxQjtJQUNILENBQUM7Ozs7Ozs7OztJQUdTLFFBQVEsQ0FBQyxHQUFXLEVBQ1gsSUFBWSxFQUNaLE1BQWU7UUFDaEMsT0FBTyxFQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBQyxDQUFDO0lBQ3JDLENBQUM7Ozs7Ozs7SUFFUyxRQUFRLENBQUMsV0FBbUIsRUFBRSxVQUFrQjs7Y0FDbEQsS0FBSyxHQUFpQixFQUFFOzs7WUFHMUIsU0FBUyxHQUFHLENBQUM7O1lBQ2IsT0FBTyxHQUFHLFVBQVU7O2NBQ2xCLFVBQVUsR0FDZCxPQUFPLElBQUksQ0FBQyxPQUFPLEtBQUssV0FBVyxJQUFJLElBQUksQ0FBQyxPQUFPLEdBQUcsVUFBVTtRQUVsRSx1QkFBdUI7UUFDdkIsSUFBSSxVQUFVLEVBQUU7WUFDZCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ2YsOERBQThEO2dCQUM5RCxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNwRSxPQUFPLEdBQUcsU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO2dCQUV2Qyw4QkFBOEI7Z0JBQzlCLElBQUksT0FBTyxHQUFHLFVBQVUsRUFBRTtvQkFDeEIsT0FBTyxHQUFHLFVBQVUsQ0FBQztvQkFDckIsU0FBUyxHQUFHLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztpQkFDeEM7YUFDRjtpQkFBTTtnQkFDTCwyQ0FBMkM7Z0JBQzNDLFNBQVM7b0JBQ1AsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7Z0JBRWpFLHdDQUF3QztnQkFDeEMsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO2FBQzlEO1NBQ0Y7UUFFRCx3QkFBd0I7UUFDeEIsS0FBSyxJQUFJLEdBQUcsR0FBRyxTQUFTLEVBQUUsR0FBRyxJQUFJLE9BQU8sRUFBRSxHQUFHLEVBQUUsRUFBRTs7a0JBQ3pDLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsUUFBUSxFQUFFLEVBQUUsR0FBRyxLQUFLLFdBQVcsQ0FBQztZQUNwRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2xCO1FBRUQsc0NBQXNDO1FBQ3RDLElBQUksVUFBVSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUM5QixJQUFJLFNBQVMsR0FBRyxDQUFDLEVBQUU7O3NCQUNYLGVBQWUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQztnQkFDbEUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQzthQUNoQztZQUVELElBQUksT0FBTyxHQUFHLFVBQVUsRUFBRTs7c0JBQ2xCLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQztnQkFDNUQsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUN6QjtTQUNGO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzs7Ozs7SUFHUyxtQkFBbUI7O2NBQ3JCLFVBQVUsR0FDZCxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUM7WUFDbkIsQ0FBQyxDQUFDLENBQUM7WUFDSCxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFFcEQsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsQ0FBQzs7O1lBeFFGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsT0FBTztnQkFDakIseWlCQUFxQztnQkFDckMsU0FBUyxFQUFFLENBQUMsNEJBQTRCLENBQUM7YUFDMUM7Ozs7WUExQkMsVUFBVTtZQVdILGdCQUFnQjtZQWJ2QixpQkFBaUI7OztvQkFnQ2hCLEtBQUs7c0JBRUwsS0FBSzs0QkFFTCxLQUFLOzZCQUVMLEtBQUs7d0JBR0wsS0FBSzsyQkFFTCxLQUFLO3VCQUVMLEtBQUs7dUJBRUwsS0FBSztxQkFFTCxLQUFLOzJCQUdMLEtBQUs7dUJBR0wsS0FBSzt1QkFHTCxNQUFNOzBCQUlOLE1BQU07MkJBSU4sS0FBSzt5QkFXTCxLQUFLOzs7O0lBL0NOLGdDQUFvQjs7Ozs7SUFFcEIsK0JBQXdCOzs7OztJQUV4QixpQ0FBeUI7Ozs7O0lBRXpCLHVDQUFnQzs7Ozs7SUFFaEMsd0NBQWlDOzs7OztJQUdqQyxtQ0FBMkI7Ozs7O0lBRTNCLHNDQUE4Qjs7Ozs7SUFFOUIsa0NBQTBCOzs7OztJQUUxQixrQ0FBMEI7Ozs7O0lBRTFCLGdDQUF5Qjs7Ozs7SUFHekIsc0NBQThCOzs7OztJQUc5QixrQ0FBMkI7Ozs7O0lBRzNCLGtDQUFzRTs7Ozs7O0lBSXRFLHFDQUNtRjs7SUF1RG5GLGtDQUE4Qjs7SUFDOUIsbUNBQStCOztJQUUvQixrQ0FBaUI7O0lBQ2pCLCtCQUFvQjs7Ozs7SUFFcEIsdUNBQWdDOzs7OztJQUNoQyxxQ0FBOEI7Ozs7O0lBQzlCLHFDQUE4Qjs7Ozs7SUFDOUIsZ0NBQXlCOzs7OztJQUN6QiwrQkFBb0I7Ozs7O0lBRVIsb0NBQThCOzs7OztJQUU5Qix5Q0FBMEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUHJvdmlkZXJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IFBhZ2VDaGFuZ2VkRXZlbnQgfSBmcm9tICcuL3BhZ2luYXRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IFBhZ2luYXRpb25Db25maWcgfSBmcm9tICcuL3BhZ2luYXRpb24uY29uZmlnJztcblxuaW1wb3J0IHsgQ29uZmlnTW9kZWwsIFBhZ2VzTW9kZWwgfSBmcm9tICcuL21vZGVscyc7XG5cbmV4cG9ydCBjb25zdCBQQUdFUl9DT05UUk9MX1ZBTFVFX0FDQ0VTU09SOiBQcm92aWRlciA9IHtcbiAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tdXNlLWJlZm9yZS1kZWNsYXJlICovXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFBhZ2VyQ29tcG9uZW50KSxcbiAgbXVsdGk6IHRydWVcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3BhZ2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BhZ2VyLmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbUEFHRVJfQ09OVFJPTF9WQUxVRV9BQ0NFU1NPUl1cbn0pXG5leHBvcnQgY2xhc3MgUGFnZXJDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0IHtcbiAgY29uZmlnOiBDb25maWdNb2RlbDtcbiAgLyoqIGlmIGB0cnVlYCBhbGlnbnMgZWFjaCBsaW5rIHRvIHRoZSBzaWRlcyBvZiBwYWdlciAqL1xuICBASW5wdXQoKSBhbGlnbjogYm9vbGVhbjtcbiAgLyoqIGxpbWl0IG51bWJlciBmb3IgcGFnZSBsaW5rcyBpbiBwYWdlciAqL1xuICBASW5wdXQoKSBtYXhTaXplOiBudW1iZXI7XG4gIC8qKiBpZiBmYWxzZSBmaXJzdCBhbmQgbGFzdCBidXR0b25zIHdpbGwgYmUgaGlkZGVuICovXG4gIEBJbnB1dCgpIGJvdW5kYXJ5TGlua3M6IGJvb2xlYW47XG4gIC8qKiBpZiBmYWxzZSBwcmV2aW91cyBhbmQgbmV4dCBidXR0b25zIHdpbGwgYmUgaGlkZGVuICovXG4gIEBJbnB1dCgpIGRpcmVjdGlvbkxpbmtzOiBib29sZWFuO1xuICAvLyBsYWJlbHNcbiAgLyoqIGZpcnN0IGJ1dHRvbiB0ZXh0ICovXG4gIEBJbnB1dCgpIGZpcnN0VGV4dDogc3RyaW5nO1xuICAvKiogcHJldmlvdXMgYnV0dG9uIHRleHQgKi9cbiAgQElucHV0KCkgcHJldmlvdXNUZXh0OiBzdHJpbmc7XG4gIC8qKiBuZXh0IGJ1dHRvbiB0ZXh0ICovXG4gIEBJbnB1dCgpIG5leHRUZXh0OiBzdHJpbmc7XG4gIC8qKiBsYXN0IGJ1dHRvbiB0ZXh0ICovXG4gIEBJbnB1dCgpIGxhc3RUZXh0OiBzdHJpbmc7XG4gIC8qKiBpZiB0cnVlIGN1cnJlbnQgcGFnZSB3aWxsIGluIHRoZSBtaWRkbGUgb2YgcGFnZXMgbGlzdCAqL1xuICBASW5wdXQoKSByb3RhdGU6IGJvb2xlYW47XG4gIC8vIGNzc1xuICAvKiogYWRkIGNsYXNzIHRvIDxjb2RlPjxsaVxcPjwvY29kZT4gKi9cbiAgQElucHV0KCkgcGFnZUJ0bkNsYXNzOiBzdHJpbmc7XG5cbiAgLyoqIGlmIHRydWUgcGFnaW5hdGlvbiBjb21wb25lbnQgd2lsbCBiZSBkaXNhYmxlZCAqL1xuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcblxuICAvKiogZmlyZWQgd2hlbiB0b3RhbCBwYWdlcyBjb3VudCBjaGFuZ2VzLCAkZXZlbnQ6bnVtYmVyIGVxdWFscyB0byB0b3RhbCBwYWdlcyBjb3VudCAqL1xuICBAT3V0cHV0KCkgbnVtUGFnZXM6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIC8qKiBmaXJlZCB3aGVuIHBhZ2Ugd2FzIGNoYW5nZWQsICRldmVudDp7cGFnZSwgaXRlbXNQZXJQYWdlfSBlcXVhbHMgdG9cbiAgICogb2JqZWN0IHdpdGggY3VycmVudCBwYWdlIGluZGV4IGFuZCBudW1iZXIgb2YgaXRlbXMgcGVyIHBhZ2VcbiAgICovXG4gIEBPdXRwdXQoKVxuICBwYWdlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPFBhZ2VDaGFuZ2VkRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxQYWdlQ2hhbmdlZEV2ZW50PigpO1xuXG4gIC8qKiBtYXhpbXVtIG51bWJlciBvZiBpdGVtcyBwZXIgcGFnZS4gSWYgdmFsdWUgbGVzcyB0aGFuIDEgd2lsbCBkaXNwbGF5IGFsbCBpdGVtcyBvbiBvbmUgcGFnZSAqL1xuICBASW5wdXQoKVxuICBnZXQgaXRlbXNQZXJQYWdlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1zUGVyUGFnZTtcbiAgfVxuXG4gIHNldCBpdGVtc1BlclBhZ2UodjogbnVtYmVyKSB7XG4gICAgdGhpcy5faXRlbXNQZXJQYWdlID0gdjtcbiAgICB0aGlzLnRvdGFsUGFnZXMgPSB0aGlzLmNhbGN1bGF0ZVRvdGFsUGFnZXMoKTtcbiAgfVxuXG4gIC8qKiB0b3RhbCBudW1iZXIgb2YgaXRlbXMgaW4gYWxsIHBhZ2VzICovXG4gIEBJbnB1dCgpXG4gIGdldCB0b3RhbEl0ZW1zKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3RvdGFsSXRlbXM7XG4gIH1cblxuICBzZXQgdG90YWxJdGVtcyh2OiBudW1iZXIpIHtcbiAgICB0aGlzLl90b3RhbEl0ZW1zID0gdjtcbiAgICB0aGlzLnRvdGFsUGFnZXMgPSB0aGlzLmNhbGN1bGF0ZVRvdGFsUGFnZXMoKTtcbiAgfVxuXG4gIGdldCB0b3RhbFBhZ2VzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3RvdGFsUGFnZXM7XG4gIH1cblxuICBzZXQgdG90YWxQYWdlcyh2OiBudW1iZXIpIHtcbiAgICB0aGlzLl90b3RhbFBhZ2VzID0gdjtcbiAgICB0aGlzLm51bVBhZ2VzLmVtaXQodik7XG4gICAgaWYgKHRoaXMuaW5pdGVkKSB7XG4gICAgICB0aGlzLnNlbGVjdFBhZ2UodGhpcy5wYWdlKTtcbiAgICB9XG4gIH1cblxuICBzZXQgcGFnZSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgY29uc3QgX3ByZXZpb3VzID0gdGhpcy5fcGFnZTtcbiAgICB0aGlzLl9wYWdlID0gdmFsdWUgPiB0aGlzLnRvdGFsUGFnZXMgPyB0aGlzLnRvdGFsUGFnZXMgOiB2YWx1ZSB8fCAxO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0aW9uLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgaWYgKF9wcmV2aW91cyA9PT0gdGhpcy5fcGFnZSB8fCB0eXBlb2YgX3ByZXZpb3VzID09PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucGFnZUNoYW5nZWQuZW1pdCh7XG4gICAgICBwYWdlOiB0aGlzLl9wYWdlLFxuICAgICAgaXRlbXNQZXJQYWdlOiB0aGlzLml0ZW1zUGVyUGFnZVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0IHBhZ2UoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fcGFnZTtcbiAgfVxuXG4gIG9uQ2hhbmdlID0gRnVuY3Rpb24ucHJvdG90eXBlO1xuICBvblRvdWNoZWQgPSBGdW5jdGlvbi5wcm90b3R5cGU7XG5cbiAgY2xhc3NNYXA6IHN0cmluZztcbiAgcGFnZXM6IFBhZ2VzTW9kZWxbXTtcblxuICBwcm90ZWN0ZWQgX2l0ZW1zUGVyUGFnZTogbnVtYmVyO1xuICBwcm90ZWN0ZWQgX3RvdGFsSXRlbXM6IG51bWJlcjtcbiAgcHJvdGVjdGVkIF90b3RhbFBhZ2VzOiBudW1iZXI7XG4gIHByb3RlY3RlZCBpbml0ZWQgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIF9wYWdlID0gMTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgICAgICAgIHBhZ2luYXRpb25Db25maWc6IFBhZ2luYXRpb25Db25maWcsXG4gICAgICAgICAgICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgIHRoaXMuZWxlbWVudFJlZiA9IGVsZW1lbnRSZWY7XG4gICAgaWYgKCF0aGlzLmNvbmZpZykge1xuICAgICAgdGhpcy5jb25maWd1cmVPcHRpb25zKFxuICAgICAgICBPYmplY3QuYXNzaWduKHt9LCBwYWdpbmF0aW9uQ29uZmlnLm1haW4sIHBhZ2luYXRpb25Db25maWcucGFnZXIpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGNvbmZpZ3VyZU9wdGlvbnMoY29uZmlnOiBDb25maWdNb2RlbCk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlnID0gT2JqZWN0LmFzc2lnbih7fSwgY29uZmlnKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgdGhpcy5jbGFzc01hcCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgnY2xhc3MnKSB8fCAnJztcbiAgICB9XG4gICAgLy8gd2F0Y2ggZm9yIG1heFNpemVcbiAgICB0aGlzLm1heFNpemUgPVxuICAgICAgdHlwZW9mIHRoaXMubWF4U2l6ZSAhPT0gJ3VuZGVmaW5lZCcgPyB0aGlzLm1heFNpemUgOiB0aGlzLmNvbmZpZy5tYXhTaXplO1xuICAgIHRoaXMucm90YXRlID1cbiAgICAgIHR5cGVvZiB0aGlzLnJvdGF0ZSAhPT0gJ3VuZGVmaW5lZCcgPyB0aGlzLnJvdGF0ZSA6IHRoaXMuY29uZmlnLnJvdGF0ZTtcbiAgICB0aGlzLmJvdW5kYXJ5TGlua3MgPVxuICAgICAgdHlwZW9mIHRoaXMuYm91bmRhcnlMaW5rcyAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgPyB0aGlzLmJvdW5kYXJ5TGlua3NcbiAgICAgICAgOiB0aGlzLmNvbmZpZy5ib3VuZGFyeUxpbmtzO1xuICAgIHRoaXMuZGlyZWN0aW9uTGlua3MgPVxuICAgICAgdHlwZW9mIHRoaXMuZGlyZWN0aW9uTGlua3MgIT09ICd1bmRlZmluZWQnXG4gICAgICAgID8gdGhpcy5kaXJlY3Rpb25MaW5rc1xuICAgICAgICA6IHRoaXMuY29uZmlnLmRpcmVjdGlvbkxpbmtzO1xuICAgIHRoaXMucGFnZUJ0bkNsYXNzID1cbiAgICAgIHR5cGVvZiB0aGlzLnBhZ2VCdG5DbGFzcyAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgPyB0aGlzLnBhZ2VCdG5DbGFzc1xuICAgICAgICA6IHRoaXMuY29uZmlnLnBhZ2VCdG5DbGFzcztcblxuICAgIC8vIGJhc2UgY2xhc3NcbiAgICB0aGlzLml0ZW1zUGVyUGFnZSA9XG4gICAgICB0eXBlb2YgdGhpcy5pdGVtc1BlclBhZ2UgIT09ICd1bmRlZmluZWQnXG4gICAgICAgID8gdGhpcy5pdGVtc1BlclBhZ2VcbiAgICAgICAgOiB0aGlzLmNvbmZpZy5pdGVtc1BlclBhZ2U7XG4gICAgdGhpcy50b3RhbFBhZ2VzID0gdGhpcy5jYWxjdWxhdGVUb3RhbFBhZ2VzKCk7XG4gICAgLy8gdGhpcyBjbGFzc1xuICAgIHRoaXMucGFnZXMgPSB0aGlzLmdldFBhZ2VzKHRoaXMucGFnZSwgdGhpcy50b3RhbFBhZ2VzKTtcbiAgICB0aGlzLmluaXRlZCA9IHRydWU7XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnBhZ2UgPSB2YWx1ZTtcbiAgICB0aGlzLnBhZ2VzID0gdGhpcy5nZXRQYWdlcyh0aGlzLnBhZ2UsIHRoaXMudG90YWxQYWdlcyk7XG4gIH1cblxuICBnZXRUZXh0KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55XG4gICAgcmV0dXJuICh0aGlzIGFzIGFueSlbYCR7a2V5fVRleHRgXSB8fCAodGhpcyBhcyBhbnkpLmNvbmZpZ1tgJHtrZXl9VGV4dGBdO1xuICB9XG5cbiAgbm9QcmV2aW91cygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5wYWdlID09PSAxO1xuICB9XG5cbiAgbm9OZXh0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnBhZ2UgPT09IHRoaXMudG90YWxQYWdlcztcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICgpID0+IHt9KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHt9KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHNlbGVjdFBhZ2UocGFnZTogbnVtYmVyLCBldmVudD86IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgaWYgKGV2ZW50ICYmIGV2ZW50LnRhcmdldCkge1xuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55XG4gICAgICAgIGNvbnN0IHRhcmdldDogYW55ID0gZXZlbnQudGFyZ2V0O1xuICAgICAgICB0YXJnZXQuYmx1cigpO1xuICAgICAgfVxuICAgICAgdGhpcy53cml0ZVZhbHVlKHBhZ2UpO1xuICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLnBhZ2UpO1xuICAgIH1cbiAgfVxuXG4gIC8vIENyZWF0ZSBwYWdlIG9iamVjdCB1c2VkIGluIHRlbXBsYXRlXG4gIHByb3RlY3RlZCBtYWtlUGFnZShudW06IG51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgIHRleHQ6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogYm9vbGVhbik6IHsgbnVtYmVyOiBudW1iZXI7IHRleHQ6IHN0cmluZzsgYWN0aXZlOiBib29sZWFuIH0ge1xuICAgIHJldHVybiB7dGV4dCwgbnVtYmVyOiBudW0sIGFjdGl2ZX07XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0UGFnZXMoY3VycmVudFBhZ2U6IG51bWJlciwgdG90YWxQYWdlczogbnVtYmVyKTogUGFnZXNNb2RlbFtdIHtcbiAgICBjb25zdCBwYWdlczogUGFnZXNNb2RlbFtdID0gW107XG5cbiAgICAvLyBEZWZhdWx0IHBhZ2UgbGltaXRzXG4gICAgbGV0IHN0YXJ0UGFnZSA9IDE7XG4gICAgbGV0IGVuZFBhZ2UgPSB0b3RhbFBhZ2VzO1xuICAgIGNvbnN0IGlzTWF4U2l6ZWQgPVxuICAgICAgdHlwZW9mIHRoaXMubWF4U2l6ZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5tYXhTaXplIDwgdG90YWxQYWdlcztcblxuICAgIC8vIHJlY29tcHV0ZSBpZiBtYXhTaXplXG4gICAgaWYgKGlzTWF4U2l6ZWQpIHtcbiAgICAgIGlmICh0aGlzLnJvdGF0ZSkge1xuICAgICAgICAvLyBDdXJyZW50IHBhZ2UgaXMgZGlzcGxheWVkIGluIHRoZSBtaWRkbGUgb2YgdGhlIHZpc2libGUgb25lc1xuICAgICAgICBzdGFydFBhZ2UgPSBNYXRoLm1heChjdXJyZW50UGFnZSAtIE1hdGguZmxvb3IodGhpcy5tYXhTaXplIC8gMiksIDEpO1xuICAgICAgICBlbmRQYWdlID0gc3RhcnRQYWdlICsgdGhpcy5tYXhTaXplIC0gMTtcblxuICAgICAgICAvLyBBZGp1c3QgaWYgbGltaXQgaXMgZXhjZWVkZWRcbiAgICAgICAgaWYgKGVuZFBhZ2UgPiB0b3RhbFBhZ2VzKSB7XG4gICAgICAgICAgZW5kUGFnZSA9IHRvdGFsUGFnZXM7XG4gICAgICAgICAgc3RhcnRQYWdlID0gZW5kUGFnZSAtIHRoaXMubWF4U2l6ZSArIDE7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFZpc2libGUgcGFnZXMgYXJlIHBhZ2luYXRlZCB3aXRoIG1heFNpemVcbiAgICAgICAgc3RhcnRQYWdlID1cbiAgICAgICAgICAoTWF0aC5jZWlsKGN1cnJlbnRQYWdlIC8gdGhpcy5tYXhTaXplKSAtIDEpICogdGhpcy5tYXhTaXplICsgMTtcblxuICAgICAgICAvLyBBZGp1c3QgbGFzdCBwYWdlIGlmIGxpbWl0IGlzIGV4Y2VlZGVkXG4gICAgICAgIGVuZFBhZ2UgPSBNYXRoLm1pbihzdGFydFBhZ2UgKyB0aGlzLm1heFNpemUgLSAxLCB0b3RhbFBhZ2VzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBZGQgcGFnZSBudW1iZXIgbGlua3NcbiAgICBmb3IgKGxldCBudW0gPSBzdGFydFBhZ2U7IG51bSA8PSBlbmRQYWdlOyBudW0rKykge1xuICAgICAgY29uc3QgcGFnZSA9IHRoaXMubWFrZVBhZ2UobnVtLCBudW0udG9TdHJpbmcoKSwgbnVtID09PSBjdXJyZW50UGFnZSk7XG4gICAgICBwYWdlcy5wdXNoKHBhZ2UpO1xuICAgIH1cblxuICAgIC8vIEFkZCBsaW5rcyB0byBtb3ZlIGJldHdlZW4gcGFnZSBzZXRzXG4gICAgaWYgKGlzTWF4U2l6ZWQgJiYgIXRoaXMucm90YXRlKSB7XG4gICAgICBpZiAoc3RhcnRQYWdlID4gMSkge1xuICAgICAgICBjb25zdCBwcmV2aW91c1BhZ2VTZXQgPSB0aGlzLm1ha2VQYWdlKHN0YXJ0UGFnZSAtIDEsICcuLi4nLCBmYWxzZSk7XG4gICAgICAgIHBhZ2VzLnVuc2hpZnQocHJldmlvdXNQYWdlU2V0KTtcbiAgICAgIH1cblxuICAgICAgaWYgKGVuZFBhZ2UgPCB0b3RhbFBhZ2VzKSB7XG4gICAgICAgIGNvbnN0IG5leHRQYWdlU2V0ID0gdGhpcy5tYWtlUGFnZShlbmRQYWdlICsgMSwgJy4uLicsIGZhbHNlKTtcbiAgICAgICAgcGFnZXMucHVzaChuZXh0UGFnZVNldCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhZ2VzO1xuICB9XG5cbiAgLy8gYmFzZSBjbGFzc1xuICBwcm90ZWN0ZWQgY2FsY3VsYXRlVG90YWxQYWdlcygpOiBudW1iZXIge1xuICAgIGNvbnN0IHRvdGFsUGFnZXMgPVxuICAgICAgdGhpcy5pdGVtc1BlclBhZ2UgPCAxXG4gICAgICAgID8gMVxuICAgICAgICA6IE1hdGguY2VpbCh0aGlzLnRvdGFsSXRlbXMgLyB0aGlzLml0ZW1zUGVyUGFnZSk7XG5cbiAgICByZXR1cm4gTWF0aC5tYXgodG90YWxQYWdlcyB8fCAwLCAxKTtcbiAgfVxufVxuIl19
@@ -2,7 +2,7 @@
2
2
  * @fileoverview added by tsickle
3
3
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
4
  */
5
- import { ChangeDetectorRef, Component, ElementRef, EventEmitter, forwardRef, Input, Output } from '@angular/core';
5
+ import { ChangeDetectorRef, Component, ElementRef, EventEmitter, forwardRef, Input, Output, TemplateRef } from '@angular/core';
6
6
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
7
7
  import { PaginationConfig } from './pagination.config';
8
8
  /**
@@ -309,7 +309,7 @@ export class PaginationComponent {
309
309
  PaginationComponent.decorators = [
310
310
  { type: Component, args: [{
311
311
  selector: 'pagination',
312
- template: "<ul class=\"pagination\" [ngClass]=\"classMap\">\n <li class=\"pagination-first page-item\"\n *ngIf=\"boundaryLinks\"\n [class.disabled]=\"noPrevious()||disabled\">\n <a class=\"page-link\" href (click)=\"selectPage(1, $event)\"\n [innerHTML]=\"getText('first')\"></a>\n </li>\n\n <li class=\"pagination-prev page-item\"\n *ngIf=\"directionLinks\"\n [class.disabled]=\"noPrevious()||disabled\">\n <a class=\"page-link\" href (click)=\"selectPage(page - 1, $event)\"\n [innerHTML]=\"getText('previous')\"></a>\n </li>\n\n <li *ngFor=\"let pg of pages\"\n [class.active]=\"pg.active\"\n [class.disabled]=\"disabled&&!pg.active\"\n class=\"pagination-page page-item\">\n <a class=\"page-link\" href (click)=\"selectPage(pg.number, $event)\"\n [innerHTML]=\"pg.text\"></a>\n </li>\n\n <li class=\"pagination-next page-item\"\n *ngIf=\"directionLinks\"\n [class.disabled]=\"noNext()||disabled\">\n <a class=\"page-link\" href (click)=\"selectPage(page + 1, $event)\"\n [innerHTML]=\"getText('next')\"></a></li>\n\n <li class=\"pagination-last page-item\"\n *ngIf=\"boundaryLinks\"\n [class.disabled]=\"noNext()||disabled\">\n <a class=\"page-link\" href (click)=\"selectPage(totalPages, $event)\"\n [innerHTML]=\"getText('last')\"></a></li>\n</ul>\n",
312
+ template: "<ul class=\"pagination\" [ngClass]=\"classMap\">\n <li class=\"pagination-first page-item\"\n *ngIf=\"boundaryLinks\"\n [class.disabled]=\"noPrevious() || disabled\">\n <a class=\"page-link\" href (click)=\"selectPage(1, $event)\">\n <ng-container [ngTemplateOutlet]=\"customFirstTemplate || defaultFirstTemplate\"\n [ngTemplateOutletContext]=\"{disabled: noPrevious() || disabled, currentPage: page}\">\n </ng-container>\n </a>\n </li>\n\n <li class=\"pagination-prev page-item\"\n *ngIf=\"directionLinks\"\n [class.disabled]=\"noPrevious() || disabled\">\n <a class=\"page-link\" href (click)=\"selectPage(page - 1, $event)\">\n <ng-container [ngTemplateOutlet]=\"customPreviousTemplate || defaultPreviousTemplate\"\n [ngTemplateOutletContext]=\"{disabled: noPrevious() || disabled, currentPage: page}\">\n </ng-container>\n </a>\n </li>\n\n <li *ngFor=\"let pg of pages\"\n [class.active]=\"pg.active\"\n [class.disabled]=\"disabled && !pg.active\"\n class=\"pagination-page page-item\">\n <a class=\"page-link\" href (click)=\"selectPage(pg.number, $event)\">\n <ng-container [ngTemplateOutlet]=\"customPageTemplate || defaultPageTemplate\"\n [ngTemplateOutletContext]=\"{disabled: disabled, $implicit: pg, currentPage: page}\">\n </ng-container>\n </a>\n </li>\n\n <li class=\"pagination-next page-item\"\n *ngIf=\"directionLinks\"\n [class.disabled]=\"noNext() || disabled\">\n <a class=\"page-link\" href (click)=\"selectPage(page + 1, $event)\">\n <ng-container [ngTemplateOutlet]=\"customNextTemplate || defaultNextTemplate\"\n [ngTemplateOutletContext]=\"{disabled: noNext() || disabled, currentPage: page}\">\n </ng-container>\n </a>\n </li>\n\n <li class=\"pagination-last page-item\"\n *ngIf=\"boundaryLinks\"\n [class.disabled]=\"noNext() || disabled\">\n <a class=\"page-link\" href (click)=\"selectPage(totalPages, $event)\">\n <ng-container [ngTemplateOutlet]=\"customLastTemplate || defaultLastTemplate\"\n [ngTemplateOutletContext]=\"{disabled: noNext() || disabled, currentPage: page}\">\n </ng-container>\n </a>\n </li>\n</ul>\n\n<ng-template #defaultPageTemplate let-page>{{ page.text }}</ng-template>\n\n<ng-template #defaultNextTemplate>{{ getText('next') }}</ng-template>\n\n<ng-template #defaultPreviousTemplate>{{ getText('previous') }}</ng-template>\n\n<ng-template #defaultFirstTemplate>{{ getText('first') }}</ng-template>\n\n<ng-template #defaultLastTemplate>{{ getText('last') }}</ng-template>\n",
313
313
  providers: [PAGINATION_CONTROL_VALUE_ACCESSOR]
314
314
  }] }
315
315
  ];
@@ -331,6 +331,11 @@ PaginationComponent.propDecorators = {
331
331
  rotate: [{ type: Input }],
332
332
  pageBtnClass: [{ type: Input }],
333
333
  disabled: [{ type: Input }],
334
+ customPageTemplate: [{ type: Input }],
335
+ customNextTemplate: [{ type: Input }],
336
+ customPreviousTemplate: [{ type: Input }],
337
+ customFirstTemplate: [{ type: Input }],
338
+ customLastTemplate: [{ type: Input }],
334
339
  numPages: [{ type: Output }],
335
340
  pageChanged: [{ type: Output }],
336
341
  itemsPerPage: [{ type: Input }],
@@ -394,6 +399,31 @@ if (false) {
394
399
  * @type {?}
395
400
  */
396
401
  PaginationComponent.prototype.disabled;
402
+ /**
403
+ * custom template for page link
404
+ * @type {?}
405
+ */
406
+ PaginationComponent.prototype.customPageTemplate;
407
+ /**
408
+ * custom template for next link
409
+ * @type {?}
410
+ */
411
+ PaginationComponent.prototype.customNextTemplate;
412
+ /**
413
+ * custom template for previous link
414
+ * @type {?}
415
+ */
416
+ PaginationComponent.prototype.customPreviousTemplate;
417
+ /**
418
+ * custom template for first link
419
+ * @type {?}
420
+ */
421
+ PaginationComponent.prototype.customFirstTemplate;
422
+ /**
423
+ * custom template for last link
424
+ * @type {?}
425
+ */
426
+ PaginationComponent.prototype.customLastTemplate;
397
427
  /**
398
428
  * fired when total pages count changes, $event:number equals to total pages count
399
429
  * @type {?}
@@ -449,4 +479,4 @@ if (false) {
449
479
  */
450
480
  PaginationComponent.prototype.changeDetection;
451
481
  }
452
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtYm9vdHN0cmFwL3BhZ2luYXRpb24vIiwic291cmNlcyI6WyJwYWdpbmF0aW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUVMLE1BQU0sRUFFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7QUFJdkQsc0NBR0M7OztJQUZDLHdDQUFxQjs7SUFDckIsZ0NBQWE7OztBQUdmLE1BQU0sT0FBTyxpQ0FBaUMsR0FBYTtJQUN6RCxPQUFPLEVBQUUsaUJBQWlCOztJQUUxQixXQUFXLEVBQUUsVUFBVTs7O0lBQUMsR0FBRyxFQUFFLENBQUMsbUJBQW1CLEVBQUM7SUFDbEQsS0FBSyxFQUFFLElBQUk7Q0FDWjtBQU9ELE1BQU0sT0FBTyxtQkFBbUI7Ozs7OztJQXFHOUIsWUFDVSxVQUFzQixFQUM5QixnQkFBa0MsRUFDMUIsZUFBa0M7UUFGbEMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUV0QixvQkFBZSxHQUFmLGVBQWUsQ0FBbUI7Ozs7UUEzRWxDLGFBQVEsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQzs7Ozs7UUFLdEUsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBb0IsQ0FBQztRQXVEbkQsYUFBUSxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUM7UUFDOUIsY0FBUyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUM7UUFRckIsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUNmLFVBQUssR0FBRyxDQUFDLENBQUM7UUFPbEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0Is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QTlCQyxVQUFVO1lBVUgsZ0JBQWdCO1lBWnZCLGlCQUFpQjs7O29CQW9DaEIsS0FBSztzQkFFTCxLQUFLOzRCQUVMLEtBQUs7NkJBRUwsS0FBSzt3QkFHTCxLQUFLOzJCQUVMLEtBQUs7dUJBRUwsS0FBSzt1QkFFTCxLQUFLO3FCQUVMLEtBQUs7MkJBR0wsS0FBSzt1QkFHTCxLQUFLO3VCQUdMLE1BQU07MEJBSU4sTUFBTTsyQkFJTixLQUFLO3lCQVdMLEtBQUs7Ozs7SUEvQ04scUNBQW9COzs7OztJQUVwQixvQ0FBd0I7Ozs7O0lBRXhCLHNDQUF5Qjs7Ozs7SUFFekIsNENBQWdDOzs7OztJQUVoQyw2Q0FBaUM7Ozs7O0lBR2pDLHdDQUEyQjs7Ozs7SUFFM0IsMkNBQThCOzs7OztJQUU5Qix1Q0FBMEI7Ozs7O0lBRTFCLHVDQUEwQjs7Ozs7SUFFMUIscUNBQXlCOzs7OztJQUd6QiwyQ0FBOEI7Ozs7O0lBRzlCLHVDQUEyQjs7Ozs7SUFHM0IsdUNBQXNFOzs7Ozs7SUFJdEUsMENBQ21EOztJQXVEbkQsdUNBQThCOztJQUM5Qix3Q0FBK0I7O0lBRS9CLHVDQUFpQjs7SUFDakIsb0NBQW9COzs7OztJQUVwQiw0Q0FBZ0M7Ozs7O0lBQ2hDLDBDQUE4Qjs7Ozs7SUFDOUIsMENBQThCOzs7OztJQUM5QixxQ0FBeUI7Ozs7O0lBQ3pCLG9DQUFvQjs7Ozs7SUFHbEIseUNBQThCOzs7OztJQUU5Qiw4Q0FBMEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUHJvdmlkZXJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IFBhZ2luYXRpb25Db25maWcgfSBmcm9tICcuL3BhZ2luYXRpb24uY29uZmlnJztcblxuaW1wb3J0IHsgQ29uZmlnTW9kZWwsIFBhZ2VzTW9kZWwgfSBmcm9tICcuL21vZGVscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFnZUNoYW5nZWRFdmVudCB7XG4gIGl0ZW1zUGVyUGFnZTogbnVtYmVyO1xuICBwYWdlOiBudW1iZXI7XG59XG5cbmV4cG9ydCBjb25zdCBQQUdJTkFUSU9OX0NPTlRST0xfVkFMVUVfQUNDRVNTT1I6IFByb3ZpZGVyID0ge1xuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby11c2UtYmVmb3JlLWRlY2xhcmUgKi9cbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUGFnaW5hdGlvbkNvbXBvbmVudCksXG4gIG11bHRpOiB0cnVlXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwYWdpbmF0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BhZ2luYXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtQQUdJTkFUSU9OX0NPTlRST0xfVkFMVUVfQUNDRVNTT1JdXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2luYXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0IHtcbiAgY29uZmlnOiBDb25maWdNb2RlbDtcbiAgLyoqIGlmIGB0cnVlYCBhbGlnbnMgZWFjaCBsaW5rIHRvIHRoZSBzaWRlcyBvZiBwYWdlciAqL1xuICBASW5wdXQoKSBhbGlnbjogYm9vbGVhbjtcbiAgLyoqIGxpbWl0IG51bWJlciBmb3IgcGFnZSBsaW5rcyBpbiBwYWdlciAqL1xuICBASW5wdXQoKSBtYXhTaXplOiBudW1iZXI7XG4gIC8qKiBpZiBmYWxzZSBmaXJzdCBhbmQgbGFzdCBidXR0b25zIHdpbGwgYmUgaGlkZGVuICovXG4gIEBJbnB1dCgpIGJvdW5kYXJ5TGlua3M6IGJvb2xlYW47XG4gIC8qKiBpZiBmYWxzZSBwcmV2aW91cyBhbmQgbmV4dCBidXR0b25zIHdpbGwgYmUgaGlkZGVuICovXG4gIEBJbnB1dCgpIGRpcmVjdGlvbkxpbmtzOiBib29sZWFuO1xuICAvLyBsYWJlbHNcbiAgLyoqIGZpcnN0IGJ1dHRvbiB0ZXh0ICovXG4gIEBJbnB1dCgpIGZpcnN0VGV4dDogc3RyaW5nO1xuICAvKiogcHJldmlvdXMgYnV0dG9uIHRleHQgKi9cbiAgQElucHV0KCkgcHJldmlvdXNUZXh0OiBzdHJpbmc7XG4gIC8qKiBuZXh0IGJ1dHRvbiB0ZXh0ICovXG4gIEBJbnB1dCgpIG5leHRUZXh0OiBzdHJpbmc7XG4gIC8qKiBsYXN0IGJ1dHRvbiB0ZXh0ICovXG4gIEBJbnB1dCgpIGxhc3RUZXh0OiBzdHJpbmc7XG4gIC8qKiBpZiB0cnVlIGN1cnJlbnQgcGFnZSB3aWxsIGluIHRoZSBtaWRkbGUgb2YgcGFnZXMgbGlzdCAqL1xuICBASW5wdXQoKSByb3RhdGU6IGJvb2xlYW47XG4gIC8vIGNzc1xuICAvKiogYWRkIGNsYXNzIHRvIDxjb2RlPjxsaVxcPjwvY29kZT4gKi9cbiAgQElucHV0KCkgcGFnZUJ0bkNsYXNzOiBzdHJpbmc7XG5cbiAgLyoqIGlmIHRydWUgcGFnaW5hdGlvbiBjb21wb25lbnQgd2lsbCBiZSBkaXNhYmxlZCAqL1xuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcblxuICAvKiogZmlyZWQgd2hlbiB0b3RhbCBwYWdlcyBjb3VudCBjaGFuZ2VzLCAkZXZlbnQ6bnVtYmVyIGVxdWFscyB0byB0b3RhbCBwYWdlcyBjb3VudCAqL1xuICBAT3V0cHV0KCkgbnVtUGFnZXM6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIC8qKiBmaXJlZCB3aGVuIHBhZ2Ugd2FzIGNoYW5nZWQsICRldmVudDp7cGFnZSwgaXRlbXNQZXJQYWdlfSBlcXVhbHMgdG8gb2JqZWN0XG4gICAqIHdpdGggY3VycmVudCBwYWdlIGluZGV4IGFuZCBudW1iZXIgb2YgaXRlbXMgcGVyIHBhZ2VcbiAgICovXG4gIEBPdXRwdXQoKVxuICBwYWdlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8UGFnZUNoYW5nZWRFdmVudD4oKTtcblxuICAvKiogbWF4aW11bSBudW1iZXIgb2YgaXRlbXMgcGVyIHBhZ2UuIElmIHZhbHVlIGxlc3MgdGhhbiAxIHdpbGwgZGlzcGxheSBhbGwgaXRlbXMgb24gb25lIHBhZ2UgKi9cbiAgQElucHV0KClcbiAgZ2V0IGl0ZW1zUGVyUGFnZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9pdGVtc1BlclBhZ2U7XG4gIH1cblxuICBzZXQgaXRlbXNQZXJQYWdlKHY6IG51bWJlcikge1xuICAgIHRoaXMuX2l0ZW1zUGVyUGFnZSA9IHY7XG4gICAgdGhpcy50b3RhbFBhZ2VzID0gdGhpcy5jYWxjdWxhdGVUb3RhbFBhZ2VzKCk7XG4gIH1cblxuICAvKiogdG90YWwgbnVtYmVyIG9mIGl0ZW1zIGluIGFsbCBwYWdlcyAqL1xuICBASW5wdXQoKVxuICBnZXQgdG90YWxJdGVtcygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl90b3RhbEl0ZW1zO1xuICB9XG5cbiAgc2V0IHRvdGFsSXRlbXModjogbnVtYmVyKSB7XG4gICAgdGhpcy5fdG90YWxJdGVtcyA9IHY7XG4gICAgdGhpcy50b3RhbFBhZ2VzID0gdGhpcy5jYWxjdWxhdGVUb3RhbFBhZ2VzKCk7XG4gIH1cblxuICBnZXQgdG90YWxQYWdlcygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl90b3RhbFBhZ2VzO1xuICB9XG5cbiAgc2V0IHRvdGFsUGFnZXModjogbnVtYmVyKSB7XG4gICAgdGhpcy5fdG90YWxQYWdlcyA9IHY7XG4gICAgdGhpcy5udW1QYWdlcy5lbWl0KHYpO1xuICAgIGlmICh0aGlzLmluaXRlZCkge1xuICAgICAgdGhpcy5zZWxlY3RQYWdlKHRoaXMucGFnZSk7XG4gICAgfVxuICB9XG5cbiAgc2V0IHBhZ2UodmFsdWU6IG51bWJlcikge1xuICAgIGNvbnN0IF9wcmV2aW91cyA9IHRoaXMuX3BhZ2U7XG4gICAgdGhpcy5fcGFnZSA9IHZhbHVlID4gdGhpcy50b3RhbFBhZ2VzID8gdGhpcy50b3RhbFBhZ2VzIDogdmFsdWUgfHwgMTtcbiAgICB0aGlzLmNoYW5nZURldGVjdGlvbi5tYXJrRm9yQ2hlY2soKTtcblxuICAgIGlmIChfcHJldmlvdXMgPT09IHRoaXMuX3BhZ2UgfHwgdHlwZW9mIF9wcmV2aW91cyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnBhZ2VDaGFuZ2VkLmVtaXQoe1xuICAgICAgcGFnZTogdGhpcy5fcGFnZSxcbiAgICAgIGl0ZW1zUGVyUGFnZTogdGhpcy5pdGVtc1BlclBhZ2VcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBwYWdlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3BhZ2U7XG4gIH1cblxuICBvbkNoYW5nZSA9IEZ1bmN0aW9uLnByb3RvdHlwZTtcbiAgb25Ub3VjaGVkID0gRnVuY3Rpb24ucHJvdG90eXBlO1xuXG4gIGNsYXNzTWFwOiBzdHJpbmc7XG4gIHBhZ2VzOiBQYWdlc01vZGVsW107XG5cbiAgcHJvdGVjdGVkIF9pdGVtc1BlclBhZ2U6IG51bWJlcjtcbiAgcHJvdGVjdGVkIF90b3RhbEl0ZW1zOiBudW1iZXI7XG4gIHByb3RlY3RlZCBfdG90YWxQYWdlczogbnVtYmVyO1xuICBwcm90ZWN0ZWQgaW5pdGVkID0gZmFsc2U7XG4gIHByb3RlY3RlZCBfcGFnZSA9IDE7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHBhZ2luYXRpb25Db25maWc6IFBhZ2luYXRpb25Db25maWcsXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIHRoaXMuZWxlbWVudFJlZiA9IGVsZW1lbnRSZWY7XG4gICAgaWYgKCF0aGlzLmNvbmZpZykge1xuICAgICAgdGhpcy5jb25maWd1cmVPcHRpb25zKHBhZ2luYXRpb25Db25maWcubWFpbik7XG4gICAgfVxuICB9XG5cbiAgY29uZmlndXJlT3B0aW9ucyhjb25maWc6IENvbmZpZ01vZGVsKTogdm9pZCB7XG4gICAgdGhpcy5jb25maWcgPSBPYmplY3QuYXNzaWduKHt9LCBjb25maWcpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB0aGlzLmNsYXNzTWFwID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCdjbGFzcycpIHx8ICcnO1xuICAgIH1cbiAgICAvLyB3YXRjaCBmb3IgbWF4U2l6ZVxuICAgIHRoaXMubWF4U2l6ZSA9XG4gICAgICB0eXBlb2YgdGhpcy5tYXhTaXplICE9PSAndW5kZWZpbmVkJyA/IHRoaXMubWF4U2l6ZSA6IHRoaXMuY29uZmlnLm1heFNpemU7XG4gICAgdGhpcy5yb3RhdGUgPVxuICAgICAgdHlwZW9mIHRoaXMucm90YXRlICE9PSAndW5kZWZpbmVkJyA/IHRoaXMucm90YXRlIDogdGhpcy5jb25maWcucm90YXRlO1xuICAgIHRoaXMuYm91bmRhcnlMaW5rcyA9XG4gICAgICB0eXBlb2YgdGhpcy5ib3VuZGFyeUxpbmtzICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICA/IHRoaXMuYm91bmRhcnlMaW5rc1xuICAgICAgICA6IHRoaXMuY29uZmlnLmJvdW5kYXJ5TGlua3M7XG4gICAgdGhpcy5kaXJlY3Rpb25MaW5rcyA9XG4gICAgICB0eXBlb2YgdGhpcy5kaXJlY3Rpb25MaW5rcyAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgPyB0aGlzLmRpcmVjdGlvbkxpbmtzXG4gICAgICAgIDogdGhpcy5jb25maWcuZGlyZWN0aW9uTGlua3M7XG4gICAgdGhpcy5wYWdlQnRuQ2xhc3MgPVxuICAgICAgdHlwZW9mIHRoaXMucGFnZUJ0bkNsYXNzICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICA/IHRoaXMucGFnZUJ0bkNsYXNzXG4gICAgICAgIDogdGhpcy5jb25maWcucGFnZUJ0bkNsYXNzO1xuXG4gICAgLy8gYmFzZSBjbGFzc1xuICAgIHRoaXMuaXRlbXNQZXJQYWdlID1cbiAgICAgIHR5cGVvZiB0aGlzLml0ZW1zUGVyUGFnZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgPyB0aGlzLml0ZW1zUGVyUGFnZVxuICAgICAgICA6IHRoaXMuY29uZmlnLml0ZW1zUGVyUGFnZTtcbiAgICB0aGlzLnRvdGFsUGFnZXMgPSB0aGlzLmNhbGN1bGF0ZVRvdGFsUGFnZXMoKTtcbiAgICAvLyB0aGlzIGNsYXNzXG4gICAgdGhpcy5wYWdlcyA9IHRoaXMuZ2V0UGFnZXModGhpcy5wYWdlLCB0aGlzLnRvdGFsUGFnZXMpO1xuICAgIHRoaXMuaW5pdGVkID0gdHJ1ZTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMucGFnZSA9IHZhbHVlO1xuICAgIHRoaXMucGFnZXMgPSB0aGlzLmdldFBhZ2VzKHRoaXMucGFnZSwgdGhpcy50b3RhbFBhZ2VzKTtcbiAgfVxuXG4gIGdldFRleHQoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnlcbiAgICByZXR1cm4gKHRoaXMgYXMgYW55KVtgJHtrZXl9VGV4dGBdIHx8ICh0aGlzIGFzIGFueSkuY29uZmlnW2Ake2tleX1UZXh0YF07XG4gIH1cblxuICBub1ByZXZpb3VzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnBhZ2UgPT09IDE7XG4gIH1cblxuICBub05leHQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucGFnZSA9PT0gdGhpcy50b3RhbFBhZ2VzO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKCkgPT4ge30pOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4ge30pOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgc2VsZWN0UGFnZShwYWdlOiBudW1iZXIsIGV2ZW50PzogRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICBpZiAoZXZlbnQgJiYgZXZlbnQudGFyZ2V0KSB7XG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnlcbiAgICAgICAgY29uc3QgdGFyZ2V0OiBhbnkgPSBldmVudC50YXJnZXQ7XG4gICAgICAgIHRhcmdldC5ibHVyKCk7XG4gICAgICB9XG4gICAgICB0aGlzLndyaXRlVmFsdWUocGFnZSk7XG4gICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMucGFnZSk7XG4gICAgfVxuICB9XG5cbiAgLy8gQ3JlYXRlIHBhZ2Ugb2JqZWN0IHVzZWQgaW4gdGVtcGxhdGVcbiAgcHJvdGVjdGVkIG1ha2VQYWdlKFxuICAgIG51bTogbnVtYmVyLFxuICAgIHRleHQ6IHN0cmluZyxcbiAgICBhY3RpdmU6IGJvb2xlYW5cbiAgKTogeyBudW1iZXI6IG51bWJlcjsgdGV4dDogc3RyaW5nOyBhY3RpdmU6IGJvb2xlYW4gfSB7XG4gICAgcmV0dXJuIHsgdGV4dCwgbnVtYmVyOiBudW0sIGFjdGl2ZSB9O1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldFBhZ2VzKGN1cnJlbnRQYWdlOiBudW1iZXIsIHRvdGFsUGFnZXM6IG51bWJlcik6IFBhZ2VzTW9kZWxbXSB7XG4gICAgY29uc3QgcGFnZXM6IFBhZ2VzTW9kZWxbXSA9IFtdO1xuXG4gICAgLy8gRGVmYXVsdCBwYWdlIGxpbWl0c1xuICAgIGxldCBzdGFydFBhZ2UgPSAxO1xuICAgIGxldCBlbmRQYWdlID0gdG90YWxQYWdlcztcbiAgICBjb25zdCBpc01heFNpemVkID1cbiAgICAgIHR5cGVvZiB0aGlzLm1heFNpemUgIT09ICd1bmRlZmluZWQnICYmIHRoaXMubWF4U2l6ZSA8IHRvdGFsUGFnZXM7XG5cbiAgICAvLyByZWNvbXB1dGUgaWYgbWF4U2l6ZVxuICAgIGlmIChpc01heFNpemVkKSB7XG4gICAgICBpZiAodGhpcy5yb3RhdGUpIHtcbiAgICAgICAgLy8gQ3VycmVudCBwYWdlIGlzIGRpc3BsYXllZCBpbiB0aGUgbWlkZGxlIG9mIHRoZSB2aXNpYmxlIG9uZXNcbiAgICAgICAgc3RhcnRQYWdlID0gTWF0aC5tYXgoY3VycmVudFBhZ2UgLSBNYXRoLmZsb29yKHRoaXMubWF4U2l6ZSAvIDIpLCAxKTtcbiAgICAgICAgZW5kUGFnZSA9IHN0YXJ0UGFnZSArIHRoaXMubWF4U2l6ZSAtIDE7XG5cbiAgICAgICAgLy8gQWRqdXN0IGlmIGxpbWl0IGlzIGV4Y2VlZGVkXG4gICAgICAgIGlmIChlbmRQYWdlID4gdG90YWxQYWdlcykge1xuICAgICAgICAgIGVuZFBhZ2UgPSB0b3RhbFBhZ2VzO1xuICAgICAgICAgIHN0YXJ0UGFnZSA9IGVuZFBhZ2UgLSB0aGlzLm1heFNpemUgKyAxO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBWaXNpYmxlIHBhZ2VzIGFyZSBwYWdpbmF0ZWQgd2l0aCBtYXhTaXplXG4gICAgICAgIHN0YXJ0UGFnZSA9XG4gICAgICAgICAgKE1hdGguY2VpbChjdXJyZW50UGFnZSAvIHRoaXMubWF4U2l6ZSkgLSAxKSAqIHRoaXMubWF4U2l6ZSArIDE7XG5cbiAgICAgICAgLy8gQWRqdXN0IGxhc3QgcGFnZSBpZiBsaW1pdCBpcyBleGNlZWRlZFxuICAgICAgICBlbmRQYWdlID0gTWF0aC5taW4oc3RhcnRQYWdlICsgdGhpcy5tYXhTaXplIC0gMSwgdG90YWxQYWdlcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQWRkIHBhZ2UgbnVtYmVyIGxpbmtzXG4gICAgZm9yIChsZXQgbnVtID0gc3RhcnRQYWdlOyBudW0gPD0gZW5kUGFnZTsgbnVtKyspIHtcbiAgICAgIGNvbnN0IHBhZ2UgPSB0aGlzLm1ha2VQYWdlKG51bSwgbnVtLnRvU3RyaW5nKCksIG51bSA9PT0gY3VycmVudFBhZ2UpO1xuICAgICAgcGFnZXMucHVzaChwYWdlKTtcbiAgICB9XG5cbiAgICAvLyBBZGQgbGlua3MgdG8gbW92ZSBiZXR3ZWVuIHBhZ2Ugc2V0c1xuICAgIGlmIChpc01heFNpemVkICYmICF0aGlzLnJvdGF0ZSkge1xuICAgICAgaWYgKHN0YXJ0UGFnZSA+IDEpIHtcbiAgICAgICAgY29uc3QgcHJldmlvdXNQYWdlU2V0ID0gdGhpcy5tYWtlUGFnZShzdGFydFBhZ2UgLSAxLCAnLi4uJywgZmFsc2UpO1xuICAgICAgICBwYWdlcy51bnNoaWZ0KHByZXZpb3VzUGFnZVNldCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChlbmRQYWdlIDwgdG90YWxQYWdlcykge1xuICAgICAgICBjb25zdCBuZXh0UGFnZVNldCA9IHRoaXMubWFrZVBhZ2UoZW5kUGFnZSArIDEsICcuLi4nLCBmYWxzZSk7XG4gICAgICAgIHBhZ2VzLnB1c2gobmV4dFBhZ2VTZXQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBwYWdlcztcbiAgfVxuXG4gIC8vIGJhc2UgY2xhc3NcbiAgcHJvdGVjdGVkIGNhbGN1bGF0ZVRvdGFsUGFnZXMoKTogbnVtYmVyIHtcbiAgICBjb25zdCB0b3RhbFBhZ2VzID1cbiAgICAgIHRoaXMuaXRlbXNQZXJQYWdlIDwgMVxuICAgICAgICA/IDFcbiAgICAgICAgOiBNYXRoLmNlaWwodGhpcy50b3RhbEl0ZW1zIC8gdGhpcy5pdGVtc1BlclBhZ2UpO1xuXG4gICAgcmV0dXJuIE1hdGgubWF4KHRvdGFsUGFnZXMgfHwgMCwgMSk7XG4gIH1cbn1cbiJdfQ==
482
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtYm9vdHN0cmFwL3BhZ2luYXRpb24vIiwic291cmNlcyI6WyJwYWdpbmF0aW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUVMLE1BQU0sRUFDSSxXQUFXLEVBQ3RCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7OztBQUd2RCxzQ0FHQzs7O0lBRkMsd0NBQXFCOztJQUNyQixnQ0FBYTs7O0FBR2YsTUFBTSxPQUFPLGlDQUFpQyxHQUFhO0lBQ3pELE9BQU8sRUFBRSxpQkFBaUI7O0lBRTFCLFdBQVcsRUFBRSxVQUFVOzs7SUFBQyxHQUFHLEVBQUUsQ0FBQyxtQkFBbUIsRUFBQztJQUNsRCxLQUFLLEVBQUUsSUFBSTtDQUNaO0FBT0QsTUFBTSxPQUFPLG1CQUFtQjs7Ozs7O0lBOEc5QixZQUNVLFVBQXNCLEVBQzlCLGdCQUFrQyxFQUMxQixlQUFrQztRQUZsQyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBRXRCLG9CQUFlLEdBQWYsZUFBZSxDQUFtQjs7OztRQTNFbEMsYUFBUSxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDOzs7OztRQUt0RSxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFvQixDQUFDO1FBdURuRCxhQUFRLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQztRQUM5QixjQUFTLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQztRQVFyQixXQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ2YsVUFBSyxHQUFHLENBQUMsQ0FBQztRQU9sQixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUs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O2FBQy9DOzs7O1lBN0JDLFVBQVU7WUFVSCxnQkFBZ0I7WUFadkIsaUJBQWlCOzs7b0JBbUNoQixLQUFLO3NCQUVMLEtBQUs7NEJBRUwsS0FBSzs2QkFFTCxLQUFLO3dCQUdMLEtBQUs7MkJBRUwsS0FBSzt1QkFFTCxLQUFLO3VCQUVMLEtBQUs7cUJBRUwsS0FBSzsyQkFHTCxLQUFLO3VCQUVMLEtBQUs7aUNBRUwsS0FBSztpQ0FFTCxLQUFLO3FDQUVMLEtBQUs7a0NBRUwsS0FBSztpQ0FFTCxLQUFLO3VCQUdMLE1BQU07MEJBSU4sTUFBTTsyQkFJTixLQUFLO3lCQVdMLEtBQUs7Ozs7SUF4RE4scUNBQW9COzs7OztJQUVwQixvQ0FBd0I7Ozs7O0lBRXhCLHNDQUF5Qjs7Ozs7SUFFekIsNENBQWdDOzs7OztJQUVoQyw2Q0FBaUM7Ozs7O0lBR2pDLHdDQUEyQjs7Ozs7SUFFM0IsMkNBQThCOzs7OztJQUU5Qix1Q0FBMEI7Ozs7O0lBRTFCLHVDQUEwQjs7Ozs7SUFFMUIscUNBQXlCOzs7OztJQUd6QiwyQ0FBOEI7Ozs7O0lBRTlCLHVDQUEyQjs7Ozs7SUFFM0IsaURBQXNFOzs7OztJQUV0RSxpREFBZ0U7Ozs7O0lBRWhFLHFEQUFvRTs7Ozs7SUFFcEUsa0RBQWlFOzs7OztJQUVqRSxpREFBZ0U7Ozs7O0lBR2hFLHVDQUFzRTs7Ozs7O0lBSXRFLDBDQUNtRDs7SUF1RG5ELHVDQUE4Qjs7SUFDOUIsd0NBQStCOztJQUUvQix1Q0FBaUI7O0lBQ2pCLG9DQUFvQjs7Ozs7SUFFcEIsNENBQWdDOzs7OztJQUNoQywwQ0FBOEI7Ozs7O0lBQzlCLDBDQUE4Qjs7Ozs7SUFDOUIscUNBQXlCOzs7OztJQUN6QixvQ0FBb0I7Ozs7O0lBR2xCLHlDQUE4Qjs7Ozs7SUFFOUIsOENBQTBDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFByb3ZpZGVyLCBUZW1wbGF0ZVJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgUGFnaW5hdGlvbkNvbmZpZyB9IGZyb20gJy4vcGFnaW5hdGlvbi5jb25maWcnO1xuaW1wb3J0IHsgQ29uZmlnTW9kZWwsIFBhZ2VzTW9kZWwsIFBhZ2luYXRpb25MaW5rQ29udGV4dCwgUGFnaW5hdGlvbk51bWJlckxpbmtDb250ZXh0IH0gZnJvbSAnLi9tb2RlbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2VDaGFuZ2VkRXZlbnQge1xuICBpdGVtc1BlclBhZ2U6IG51bWJlcjtcbiAgcGFnZTogbnVtYmVyO1xufVxuXG5leHBvcnQgY29uc3QgUEFHSU5BVElPTl9DT05UUk9MX1ZBTFVFX0FDQ0VTU09SOiBQcm92aWRlciA9IHtcbiAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tdXNlLWJlZm9yZS1kZWNsYXJlICovXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFBhZ2luYXRpb25Db21wb25lbnQpLFxuICBtdWx0aTogdHJ1ZVxufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGFnaW5hdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9wYWdpbmF0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbUEFHSU5BVElPTl9DT05UUk9MX1ZBTFVFX0FDQ0VTU09SXVxufSlcbmV4cG9ydCBjbGFzcyBQYWdpbmF0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCB7XG4gIGNvbmZpZzogQ29uZmlnTW9kZWw7XG4gIC8qKiBpZiBgdHJ1ZWAgYWxpZ25zIGVhY2ggbGluayB0byB0aGUgc2lkZXMgb2YgcGFnZXIgKi9cbiAgQElucHV0KCkgYWxpZ246IGJvb2xlYW47XG4gIC8qKiBsaW1pdCBudW1iZXIgZm9yIHBhZ2UgbGlua3MgaW4gcGFnZXIgKi9cbiAgQElucHV0KCkgbWF4U2l6ZTogbnVtYmVyO1xuICAvKiogaWYgZmFsc2UgZmlyc3QgYW5kIGxhc3QgYnV0dG9ucyB3aWxsIGJlIGhpZGRlbiAqL1xuICBASW5wdXQoKSBib3VuZGFyeUxpbmtzOiBib29sZWFuO1xuICAvKiogaWYgZmFsc2UgcHJldmlvdXMgYW5kIG5leHQgYnV0dG9ucyB3aWxsIGJlIGhpZGRlbiAqL1xuICBASW5wdXQoKSBkaXJlY3Rpb25MaW5rczogYm9vbGVhbjtcbiAgLy8gbGFiZWxzXG4gIC8qKiBmaXJzdCBidXR0b24gdGV4dCAqL1xuICBASW5wdXQoKSBmaXJzdFRleHQ6IHN0cmluZztcbiAgLyoqIHByZXZpb3VzIGJ1dHRvbiB0ZXh0ICovXG4gIEBJbnB1dCgpIHByZXZpb3VzVGV4dDogc3RyaW5nO1xuICAvKiogbmV4dCBidXR0b24gdGV4dCAqL1xuICBASW5wdXQoKSBuZXh0VGV4dDogc3RyaW5nO1xuICAvKiogbGFzdCBidXR0b24gdGV4dCAqL1xuICBASW5wdXQoKSBsYXN0VGV4dDogc3RyaW5nO1xuICAvKiogaWYgdHJ1ZSBjdXJyZW50IHBhZ2Ugd2lsbCBpbiB0aGUgbWlkZGxlIG9mIHBhZ2VzIGxpc3QgKi9cbiAgQElucHV0KCkgcm90YXRlOiBib29sZWFuO1xuICAvLyBjc3NcbiAgLyoqIGFkZCBjbGFzcyB0byA8Y29kZT48bGlcXD48L2NvZGU+ICovXG4gIEBJbnB1dCgpIHBhZ2VCdG5DbGFzczogc3RyaW5nO1xuICAvKiogaWYgdHJ1ZSBwYWdpbmF0aW9uIGNvbXBvbmVudCB3aWxsIGJlIGRpc2FibGVkICovXG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuO1xuICAvKiogY3VzdG9tIHRlbXBsYXRlIGZvciBwYWdlIGxpbmsgKi9cbiAgQElucHV0KCkgY3VzdG9tUGFnZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxQYWdpbmF0aW9uTnVtYmVyTGlua0NvbnRleHQ+O1xuICAvKiogY3VzdG9tIHRlbXBsYXRlIGZvciBuZXh0IGxpbmsgKi9cbiAgQElucHV0KCkgY3VzdG9tTmV4dFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxQYWdpbmF0aW9uTGlua0NvbnRleHQ+O1xuICAvKiogY3VzdG9tIHRlbXBsYXRlIGZvciBwcmV2aW91cyBsaW5rICovXG4gIEBJbnB1dCgpIGN1c3RvbVByZXZpb3VzVGVtcGxhdGU6IFRlbXBsYXRlUmVmPFBhZ2luYXRpb25MaW5rQ29udGV4dD47XG4gIC8qKiBjdXN0b20gdGVtcGxhdGUgZm9yIGZpcnN0IGxpbmsgKi9cbiAgQElucHV0KCkgY3VzdG9tRmlyc3RUZW1wbGF0ZTogVGVtcGxhdGVSZWY8UGFnaW5hdGlvbkxpbmtDb250ZXh0PjtcbiAgLyoqIGN1c3RvbSB0ZW1wbGF0ZSBmb3IgbGFzdCBsaW5rICovXG4gIEBJbnB1dCgpIGN1c3RvbUxhc3RUZW1wbGF0ZTogVGVtcGxhdGVSZWY8UGFnaW5hdGlvbkxpbmtDb250ZXh0PjtcblxuICAvKiogZmlyZWQgd2hlbiB0b3RhbCBwYWdlcyBjb3VudCBjaGFuZ2VzLCAkZXZlbnQ6bnVtYmVyIGVxdWFscyB0byB0b3RhbCBwYWdlcyBjb3VudCAqL1xuICBAT3V0cHV0KCkgbnVtUGFnZXM6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIC8qKiBmaXJlZCB3aGVuIHBhZ2Ugd2FzIGNoYW5nZWQsICRldmVudDp7cGFnZSwgaXRlbXNQZXJQYWdlfSBlcXVhbHMgdG8gb2JqZWN0XG4gICAqIHdpdGggY3VycmVudCBwYWdlIGluZGV4IGFuZCBudW1iZXIgb2YgaXRlbXMgcGVyIHBhZ2VcbiAgICovXG4gIEBPdXRwdXQoKVxuICBwYWdlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8UGFnZUNoYW5nZWRFdmVudD4oKTtcblxuICAvKiogbWF4aW11bSBudW1iZXIgb2YgaXRlbXMgcGVyIHBhZ2UuIElmIHZhbHVlIGxlc3MgdGhhbiAxIHdpbGwgZGlzcGxheSBhbGwgaXRlbXMgb24gb25lIHBhZ2UgKi9cbiAgQElucHV0KClcbiAgZ2V0IGl0ZW1zUGVyUGFnZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9pdGVtc1BlclBhZ2U7XG4gIH1cblxuICBzZXQgaXRlbXNQZXJQYWdlKHY6IG51bWJlcikge1xuICAgIHRoaXMuX2l0ZW1zUGVyUGFnZSA9IHY7XG4gICAgdGhpcy50b3RhbFBhZ2VzID0gdGhpcy5jYWxjdWxhdGVUb3RhbFBhZ2VzKCk7XG4gIH1cblxuICAvKiogdG90YWwgbnVtYmVyIG9mIGl0ZW1zIGluIGFsbCBwYWdlcyAqL1xuICBASW5wdXQoKVxuICBnZXQgdG90YWxJdGVtcygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl90b3RhbEl0ZW1zO1xuICB9XG5cbiAgc2V0IHRvdGFsSXRlbXModjogbnVtYmVyKSB7XG4gICAgdGhpcy5fdG90YWxJdGVtcyA9IHY7XG4gICAgdGhpcy50b3RhbFBhZ2VzID0gdGhpcy5jYWxjdWxhdGVUb3RhbFBhZ2VzKCk7XG4gIH1cblxuICBnZXQgdG90YWxQYWdlcygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl90b3RhbFBhZ2VzO1xuICB9XG5cbiAgc2V0IHRvdGFsUGFnZXModjogbnVtYmVyKSB7XG4gICAgdGhpcy5fdG90YWxQYWdlcyA9IHY7XG4gICAgdGhpcy5udW1QYWdlcy5lbWl0KHYpO1xuICAgIGlmICh0aGlzLmluaXRlZCkge1xuICAgICAgdGhpcy5zZWxlY3RQYWdlKHRoaXMucGFnZSk7XG4gICAgfVxuICB9XG5cbiAgc2V0IHBhZ2UodmFsdWU6IG51bWJlcikge1xuICAgIGNvbnN0IF9wcmV2aW91cyA9IHRoaXMuX3BhZ2U7XG4gICAgdGhpcy5fcGFnZSA9IHZhbHVlID4gdGhpcy50b3RhbFBhZ2VzID8gdGhpcy50b3RhbFBhZ2VzIDogdmFsdWUgfHwgMTtcbiAgICB0aGlzLmNoYW5nZURldGVjdGlvbi5tYXJrRm9yQ2hlY2soKTtcblxuICAgIGlmIChfcHJldmlvdXMgPT09IHRoaXMuX3BhZ2UgfHwgdHlwZW9mIF9wcmV2aW91cyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnBhZ2VDaGFuZ2VkLmVtaXQoe1xuICAgICAgcGFnZTogdGhpcy5fcGFnZSxcbiAgICAgIGl0ZW1zUGVyUGFnZTogdGhpcy5pdGVtc1BlclBhZ2VcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBwYWdlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3BhZ2U7XG4gIH1cblxuICBvbkNoYW5nZSA9IEZ1bmN0aW9uLnByb3RvdHlwZTtcbiAgb25Ub3VjaGVkID0gRnVuY3Rpb24ucHJvdG90eXBlO1xuXG4gIGNsYXNzTWFwOiBzdHJpbmc7XG4gIHBhZ2VzOiBQYWdlc01vZGVsW107XG5cbiAgcHJvdGVjdGVkIF9pdGVtc1BlclBhZ2U6IG51bWJlcjtcbiAgcHJvdGVjdGVkIF90b3RhbEl0ZW1zOiBudW1iZXI7XG4gIHByb3RlY3RlZCBfdG90YWxQYWdlczogbnVtYmVyO1xuICBwcm90ZWN0ZWQgaW5pdGVkID0gZmFsc2U7XG4gIHByb3RlY3RlZCBfcGFnZSA9IDE7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHBhZ2luYXRpb25Db25maWc6IFBhZ2luYXRpb25Db25maWcsXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIHRoaXMuZWxlbWVudFJlZiA9IGVsZW1lbnRSZWY7XG4gICAgaWYgKCF0aGlzLmNvbmZpZykge1xuICAgICAgdGhpcy5jb25maWd1cmVPcHRpb25zKHBhZ2luYXRpb25Db25maWcubWFpbik7XG4gICAgfVxuICB9XG5cbiAgY29uZmlndXJlT3B0aW9ucyhjb25maWc6IENvbmZpZ01vZGVsKTogdm9pZCB7XG4gICAgdGhpcy5jb25maWcgPSBPYmplY3QuYXNzaWduKHt9LCBjb25maWcpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB0aGlzLmNsYXNzTWFwID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCdjbGFzcycpIHx8ICcnO1xuICAgIH1cbiAgICAvLyB3YXRjaCBmb3IgbWF4U2l6ZVxuICAgIHRoaXMubWF4U2l6ZSA9XG4gICAgICB0eXBlb2YgdGhpcy5tYXhTaXplICE9PSAndW5kZWZpbmVkJyA/IHRoaXMubWF4U2l6ZSA6IHRoaXMuY29uZmlnLm1heFNpemU7XG4gICAgdGhpcy5yb3RhdGUgPVxuICAgICAgdHlwZW9mIHRoaXMucm90YXRlICE9PSAndW5kZWZpbmVkJyA/IHRoaXMucm90YXRlIDogdGhpcy5jb25maWcucm90YXRlO1xuICAgIHRoaXMuYm91bmRhcnlMaW5rcyA9XG4gICAgICB0eXBlb2YgdGhpcy5ib3VuZGFyeUxpbmtzICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICA/IHRoaXMuYm91bmRhcnlMaW5rc1xuICAgICAgICA6IHRoaXMuY29uZmlnLmJvdW5kYXJ5TGlua3M7XG4gICAgdGhpcy5kaXJlY3Rpb25MaW5rcyA9XG4gICAgICB0eXBlb2YgdGhpcy5kaXJlY3Rpb25MaW5rcyAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgPyB0aGlzLmRpcmVjdGlvbkxpbmtzXG4gICAgICAgIDogdGhpcy5jb25maWcuZGlyZWN0aW9uTGlua3M7XG4gICAgdGhpcy5wYWdlQnRuQ2xhc3MgPVxuICAgICAgdHlwZW9mIHRoaXMucGFnZUJ0bkNsYXNzICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICA/IHRoaXMucGFnZUJ0bkNsYXNzXG4gICAgICAgIDogdGhpcy5jb25maWcucGFnZUJ0bkNsYXNzO1xuXG4gICAgLy8gYmFzZSBjbGFzc1xuICAgIHRoaXMuaXRlbXNQZXJQYWdlID1cbiAgICAgIHR5cGVvZiB0aGlzLml0ZW1zUGVyUGFnZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgPyB0aGlzLml0ZW1zUGVyUGFnZVxuICAgICAgICA6IHRoaXMuY29uZmlnLml0ZW1zUGVyUGFnZTtcbiAgICB0aGlzLnRvdGFsUGFnZXMgPSB0aGlzLmNhbGN1bGF0ZVRvdGFsUGFnZXMoKTtcbiAgICAvLyB0aGlzIGNsYXNzXG4gICAgdGhpcy5wYWdlcyA9IHRoaXMuZ2V0UGFnZXModGhpcy5wYWdlLCB0aGlzLnRvdGFsUGFnZXMpO1xuICAgIHRoaXMuaW5pdGVkID0gdHJ1ZTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMucGFnZSA9IHZhbHVlO1xuICAgIHRoaXMucGFnZXMgPSB0aGlzLmdldFBhZ2VzKHRoaXMucGFnZSwgdGhpcy50b3RhbFBhZ2VzKTtcbiAgfVxuXG4gIGdldFRleHQoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnlcbiAgICByZXR1cm4gKHRoaXMgYXMgYW55KVtgJHtrZXl9VGV4dGBdIHx8ICh0aGlzIGFzIGFueSkuY29uZmlnW2Ake2tleX1UZXh0YF07XG4gIH1cblxuICBub1ByZXZpb3VzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnBhZ2UgPT09IDE7XG4gIH1cblxuICBub05leHQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucGFnZSA9PT0gdGhpcy50b3RhbFBhZ2VzO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKCkgPT4ge30pOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4ge30pOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgc2VsZWN0UGFnZShwYWdlOiBudW1iZXIsIGV2ZW50PzogRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICBpZiAoZXZlbnQgJiYgZXZlbnQudGFyZ2V0KSB7XG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnlcbiAgICAgICAgY29uc3QgdGFyZ2V0OiBhbnkgPSBldmVudC50YXJnZXQ7XG4gICAgICAgIHRhcmdldC5ibHVyKCk7XG4gICAgICB9XG4gICAgICB0aGlzLndyaXRlVmFsdWUocGFnZSk7XG4gICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMucGFnZSk7XG4gICAgfVxuICB9XG5cbiAgLy8gQ3JlYXRlIHBhZ2Ugb2JqZWN0IHVzZWQgaW4gdGVtcGxhdGVcbiAgcHJvdGVjdGVkIG1ha2VQYWdlKFxuICAgIG51bTogbnVtYmVyLFxuICAgIHRleHQ6IHN0cmluZyxcbiAgICBhY3RpdmU6IGJvb2xlYW5cbiAgKTogeyBudW1iZXI6IG51bWJlcjsgdGV4dDogc3RyaW5nOyBhY3RpdmU6IGJvb2xlYW4gfSB7XG4gICAgcmV0dXJuIHsgdGV4dCwgbnVtYmVyOiBudW0sIGFjdGl2ZSB9O1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldFBhZ2VzKGN1cnJlbnRQYWdlOiBudW1iZXIsIHRvdGFsUGFnZXM6IG51bWJlcik6IFBhZ2VzTW9kZWxbXSB7XG4gICAgY29uc3QgcGFnZXM6IFBhZ2VzTW9kZWxbXSA9IFtdO1xuXG4gICAgLy8gRGVmYXVsdCBwYWdlIGxpbWl0c1xuICAgIGxldCBzdGFydFBhZ2UgPSAxO1xuICAgIGxldCBlbmRQYWdlID0gdG90YWxQYWdlcztcbiAgICBjb25zdCBpc01heFNpemVkID1cbiAgICAgIHR5cGVvZiB0aGlzLm1heFNpemUgIT09ICd1bmRlZmluZWQnICYmIHRoaXMubWF4U2l6ZSA8IHRvdGFsUGFnZXM7XG5cbiAgICAvLyByZWNvbXB1dGUgaWYgbWF4U2l6ZVxuICAgIGlmIChpc01heFNpemVkKSB7XG4gICAgICBpZiAodGhpcy5yb3RhdGUpIHtcbiAgICAgICAgLy8gQ3VycmVudCBwYWdlIGlzIGRpc3BsYXllZCBpbiB0aGUgbWlkZGxlIG9mIHRoZSB2aXNpYmxlIG9uZXNcbiAgICAgICAgc3RhcnRQYWdlID0gTWF0aC5tYXgoY3VycmVudFBhZ2UgLSBNYXRoLmZsb29yKHRoaXMubWF4U2l6ZSAvIDIpLCAxKTtcbiAgICAgICAgZW5kUGFnZSA9IHN0YXJ0UGFnZSArIHRoaXMubWF4U2l6ZSAtIDE7XG5cbiAgICAgICAgLy8gQWRqdXN0IGlmIGxpbWl0IGlzIGV4Y2VlZGVkXG4gICAgICAgIGlmIChlbmRQYWdlID4gdG90YWxQYWdlcykge1xuICAgICAgICAgIGVuZFBhZ2UgPSB0b3RhbFBhZ2VzO1xuICAgICAgICAgIHN0YXJ0UGFnZSA9IGVuZFBhZ2UgLSB0aGlzLm1heFNpemUgKyAxO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBWaXNpYmxlIHBhZ2VzIGFyZSBwYWdpbmF0ZWQgd2l0aCBtYXhTaXplXG4gICAgICAgIHN0YXJ0UGFnZSA9XG4gICAgICAgICAgKE1hdGguY2VpbChjdXJyZW50UGFnZSAvIHRoaXMubWF4U2l6ZSkgLSAxKSAqIHRoaXMubWF4U2l6ZSArIDE7XG5cbiAgICAgICAgLy8gQWRqdXN0IGxhc3QgcGFnZSBpZiBsaW1pdCBpcyBleGNlZWRlZFxuICAgICAgICBlbmRQYWdlID0gTWF0aC5taW4oc3RhcnRQYWdlICsgdGhpcy5tYXhTaXplIC0gMSwgdG90YWxQYWdlcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQWRkIHBhZ2UgbnVtYmVyIGxpbmtzXG4gICAgZm9yIChsZXQgbnVtID0gc3RhcnRQYWdlOyBudW0gPD0gZW5kUGFnZTsgbnVtKyspIHtcbiAgICAgIGNvbnN0IHBhZ2UgPSB0aGlzLm1ha2VQYWdlKG51bSwgbnVtLnRvU3RyaW5nKCksIG51bSA9PT0gY3VycmVudFBhZ2UpO1xuICAgICAgcGFnZXMucHVzaChwYWdlKTtcbiAgICB9XG5cbiAgICAvLyBBZGQgbGlua3MgdG8gbW92ZSBiZXR3ZWVuIHBhZ2Ugc2V0c1xuICAgIGlmIChpc01heFNpemVkICYmICF0aGlzLnJvdGF0ZSkge1xuICAgICAgaWYgKHN0YXJ0UGFnZSA+IDEpIHtcbiAgICAgICAgY29uc3QgcHJldmlvdXNQYWdlU2V0ID0gdGhpcy5tYWtlUGFnZShzdGFydFBhZ2UgLSAxLCAnLi4uJywgZmFsc2UpO1xuICAgICAgICBwYWdlcy51bnNoaWZ0KHByZXZpb3VzUGFnZVNldCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChlbmRQYWdlIDwgdG90YWxQYWdlcykge1xuICAgICAgICBjb25zdCBuZXh0UGFnZVNldCA9IHRoaXMubWFrZVBhZ2UoZW5kUGFnZSArIDEsICcuLi4nLCBmYWxzZSk7XG4gICAgICAgIHBhZ2VzLnB1c2gobmV4dFBhZ2VTZXQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBwYWdlcztcbiAgfVxuXG4gIC8vIGJhc2UgY2xhc3NcbiAgcHJvdGVjdGVkIGNhbGN1bGF0ZVRvdGFsUGFnZXMoKTogbnVtYmVyIHtcbiAgICBjb25zdCB0b3RhbFBhZ2VzID1cbiAgICAgIHRoaXMuaXRlbXNQZXJQYWdlIDwgMVxuICAgICAgICA/IDFcbiAgICAgICAgOiBNYXRoLmNlaWwodGhpcy50b3RhbEl0ZW1zIC8gdGhpcy5pdGVtc1BlclBhZ2UpO1xuXG4gICAgcmV0dXJuIE1hdGgubWF4KHRvdGFsUGFnZXMgfHwgMCwgMSk7XG4gIH1cbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTptYXgtZmlsZS1saW5lLWNvdW50XG59XG4iXX0=
@@ -6,4 +6,4 @@ export { PagerComponent } from './pager.component';
6
6
  export { PaginationComponent } from './pagination.component';
7
7
  export { PaginationModule } from './pagination.module';
8
8
  export { PaginationConfig } from './pagination.config';
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1ib290c3RyYXAvcGFnaW5hdGlvbi8iLCJzb3VyY2VzIjpbInB1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsbUJBQW1CLEVBQW9CLE1BQU0sd0JBQXdCLENBQUM7QUFDL0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBQYWdlckNvbXBvbmVudCB9IGZyb20gJy4vcGFnZXIuY29tcG9uZW50JztcbmV4cG9ydCB7IFBhZ2luYXRpb25Db21wb25lbnQsIFBhZ2VDaGFuZ2VkRXZlbnQgfSBmcm9tICcuL3BhZ2luYXRpb24uY29tcG9uZW50JztcbmV4cG9ydCB7IFBhZ2luYXRpb25Nb2R1bGUgfSBmcm9tICcuL3BhZ2luYXRpb24ubW9kdWxlJztcbmV4cG9ydCB7IFBhZ2luYXRpb25Db25maWcgfSBmcm9tICcuL3BhZ2luYXRpb24uY29uZmlnJztcbiJdfQ==
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1ib290c3RyYXAvcGFnaW5hdGlvbi8iLCJzb3VyY2VzIjpbInB1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsbUJBQW1CLEVBQW9CLE1BQU0sd0JBQXdCLENBQUM7QUFDL0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBQYWdlckNvbXBvbmVudCB9IGZyb20gJy4vcGFnZXIuY29tcG9uZW50JztcbmV4cG9ydCB7IFBhZ2luYXRpb25Db21wb25lbnQsIFBhZ2VDaGFuZ2VkRXZlbnQgfSBmcm9tICcuL3BhZ2luYXRpb24uY29tcG9uZW50JztcbmV4cG9ydCB7IFBhZ2luYXRpb25Nb2R1bGUgfSBmcm9tICcuL3BhZ2luYXRpb24ubW9kdWxlJztcbmV4cG9ydCB7IFBhZ2luYXRpb25Db25maWcgfSBmcm9tICcuL3BhZ2luYXRpb24uY29uZmlnJztcbmV4cG9ydCB7IFBhZ2luYXRpb25MaW5rQ29udGV4dCwgUGFnaW5hdGlvbk51bWJlckxpbmtDb250ZXh0LCBQYWdlc01vZGVsIH0gZnJvbSAnLi9tb2RlbHMnO1xuIl19
@@ -31,15 +31,25 @@ if (false) {
31
31
  ConfigModel.prototype.rotate;
32
32
  }
33
33
  /**
34
+ * Contain information about the page
34
35
  * @record
35
36
  */
36
37
  export function PagesModel() { }
37
38
  if (false) {
38
- /** @type {?} */
39
+ /**
40
+ * Text, which is displayed in the link
41
+ * @type {?}
42
+ */
39
43
  PagesModel.prototype.text;
40
- /** @type {?} */
44
+ /**
45
+ * Page number
46
+ * @type {?}
47
+ */
41
48
  PagesModel.prototype.number;
42
- /** @type {?} */
49
+ /**
50
+ * If `true`, then this is the current page
51
+ * @type {?}
52
+ */
43
53
  PagesModel.prototype.active;
44
54
  }
45
55
  /**
@@ -58,4 +68,39 @@ if (false) {
58
68
  /** @type {?} */
59
69
  PagerModel.prototype.align;
60
70
  }
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtYm9vdHN0cmFwL3BhZ2luYXRpb24vIiwic291cmNlcyI6WyJtb2RlbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLGlDQVlDOzs7SUFYQyw0QkFBZ0I7O0lBQ2hCLG9DQUF1Qjs7SUFDdkIscUNBQXdCOztJQUN4QixnQ0FBa0I7O0lBQ2xCLG1DQUFxQjs7SUFDckIsK0JBQWlCOztJQUNqQiw4QkFBZ0I7O0lBQ2hCLCtCQUFpQjs7SUFDakIsbUNBQXFCOztJQUNyQixtQ0FBcUI7O0lBQ3JCLDZCQUFnQjs7Ozs7QUFHbEIsZ0NBSUM7OztJQUhDLDBCQUFhOztJQUNiLDRCQUFlOztJQUNmLDRCQUFnQjs7Ozs7QUFHbEIsZ0NBTUM7OztJQUxDLGtDQUFxQjs7SUFDckIsa0NBQXFCOztJQUNyQiw4QkFBaUI7O0lBQ2pCLGtDQUFxQjs7SUFDckIsMkJBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIENvbmZpZ01vZGVsIHtcbiAgYWxpZ24/OiBib29sZWFuO1xuICBib3VuZGFyeUxpbmtzOiBib29sZWFuO1xuICBkaXJlY3Rpb25MaW5rczogYm9vbGVhbjtcbiAgZmlyc3RUZXh0OiBzdHJpbmc7XG4gIGl0ZW1zUGVyUGFnZTogbnVtYmVyO1xuICBsYXN0VGV4dDogc3RyaW5nO1xuICBtYXhTaXplOiBudW1iZXI7XG4gIG5leHRUZXh0OiBzdHJpbmc7XG4gIHBhZ2VCdG5DbGFzczogc3RyaW5nO1xuICBwcmV2aW91c1RleHQ6IHN0cmluZztcbiAgcm90YXRlOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2VzTW9kZWwge1xuICB0ZXh0OiBzdHJpbmc7XG4gIG51bWJlcjogbnVtYmVyO1xuICBhY3RpdmU6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFnZXJNb2RlbCB7XG4gIGl0ZW1zUGVyUGFnZTogbnVtYmVyO1xuICBwcmV2aW91c1RleHQ6IHN0cmluZztcbiAgbmV4dFRleHQ6IHN0cmluZztcbiAgcGFnZUJ0bkNsYXNzOiBzdHJpbmc7XG4gIGFsaWduOiBib29sZWFuO1xufVxuIl19
71
+ /**
72
+ * A context for the
73
+ * * `customPageTemplate`
74
+ * * `customNextTemplate`
75
+ * * `customPreviousTemplate`
76
+ * * `customFirstTemplate`
77
+ * * `customLastTemplate`
78
+ * inputs for link templates in case you want to override one
79
+ * @record
80
+ */
81
+ export function PaginationLinkContext() { }
82
+ if (false) {
83
+ /**
84
+ * The currently selected page number
85
+ * @type {?}
86
+ */
87
+ PaginationLinkContext.prototype.currentPage;
88
+ /**
89
+ * If `true`, the current link is disabled
90
+ * @type {?}
91
+ */
92
+ PaginationLinkContext.prototype.disabled;
93
+ }
94
+ /**
95
+ * A context for the `pageTemplate` inputs for link template
96
+ * @record
97
+ */
98
+ export function PaginationNumberLinkContext() { }
99
+ if (false) {
100
+ /**
101
+ * Contain the page information
102
+ * @type {?}
103
+ */
104
+ PaginationNumberLinkContext.prototype.$implicit;
105
+ }
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtYm9vdHN0cmFwL3BhZ2luYXRpb24vIiwic291cmNlcyI6WyJtb2RlbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLGlDQVlDOzs7SUFYQyw0QkFBZ0I7O0lBQ2hCLG9DQUF1Qjs7SUFDdkIscUNBQXdCOztJQUN4QixnQ0FBa0I7O0lBQ2xCLG1DQUFxQjs7SUFDckIsK0JBQWlCOztJQUNqQiw4QkFBZ0I7O0lBQ2hCLCtCQUFpQjs7SUFDakIsbUNBQXFCOztJQUNyQixtQ0FBcUI7O0lBQ3JCLDZCQUFnQjs7Ozs7O0FBS2xCLGdDQU9DOzs7Ozs7SUFMQywwQkFBYTs7Ozs7SUFFYiw0QkFBZTs7Ozs7SUFFZiw0QkFBZ0I7Ozs7O0FBR2xCLGdDQU1DOzs7SUFMQyxrQ0FBcUI7O0lBQ3JCLGtDQUFxQjs7SUFDckIsOEJBQWlCOztJQUNqQixrQ0FBcUI7O0lBQ3JCLDJCQUFlOzs7Ozs7Ozs7Ozs7QUFZakIsMkNBS0M7Ozs7OztJQUhDLDRDQUFvQjs7Ozs7SUFFcEIseUNBQWtCOzs7Ozs7QUFNcEIsaURBR0M7Ozs7OztJQURDLGdEQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgQ29uZmlnTW9kZWwge1xuICBhbGlnbj86IGJvb2xlYW47XG4gIGJvdW5kYXJ5TGlua3M6IGJvb2xlYW47XG4gIGRpcmVjdGlvbkxpbmtzOiBib29sZWFuO1xuICBmaXJzdFRleHQ6IHN0cmluZztcbiAgaXRlbXNQZXJQYWdlOiBudW1iZXI7XG4gIGxhc3RUZXh0OiBzdHJpbmc7XG4gIG1heFNpemU6IG51bWJlcjtcbiAgbmV4dFRleHQ6IHN0cmluZztcbiAgcGFnZUJ0bkNsYXNzOiBzdHJpbmc7XG4gIHByZXZpb3VzVGV4dDogc3RyaW5nO1xuICByb3RhdGU6IGJvb2xlYW47XG59XG4vKipcbiAqIENvbnRhaW4gaW5mb3JtYXRpb24gYWJvdXQgdGhlIHBhZ2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYWdlc01vZGVsIHtcbiAgLyoqIFRleHQsIHdoaWNoIGlzIGRpc3BsYXllZCBpbiB0aGUgbGluayAqL1xuICB0ZXh0OiBzdHJpbmc7XG4gIC8qKiBQYWdlIG51bWJlciAqL1xuICBudW1iZXI6IG51bWJlcjtcbiAgLyoqIElmIGB0cnVlYCwgdGhlbiB0aGlzIGlzIHRoZSBjdXJyZW50IHBhZ2UgKi9cbiAgYWN0aXZlOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2VyTW9kZWwge1xuICBpdGVtc1BlclBhZ2U6IG51bWJlcjtcbiAgcHJldmlvdXNUZXh0OiBzdHJpbmc7XG4gIG5leHRUZXh0OiBzdHJpbmc7XG4gIHBhZ2VCdG5DbGFzczogc3RyaW5nO1xuICBhbGlnbjogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBBIGNvbnRleHQgZm9yIHRoZVxuICogKiBgY3VzdG9tUGFnZVRlbXBsYXRlYFxuICogKiBgY3VzdG9tTmV4dFRlbXBsYXRlYFxuICogKiBgY3VzdG9tUHJldmlvdXNUZW1wbGF0ZWBcbiAqICogYGN1c3RvbUZpcnN0VGVtcGxhdGVgXG4gKiAqIGBjdXN0b21MYXN0VGVtcGxhdGVgXG4gKiBpbnB1dHMgZm9yIGxpbmsgdGVtcGxhdGVzIGluIGNhc2UgeW91IHdhbnQgdG8gb3ZlcnJpZGUgb25lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFnaW5hdGlvbkxpbmtDb250ZXh0IHtcbiAgLyoqIFRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgcGFnZSBudW1iZXIgKi9cbiAgY3VycmVudFBhZ2U6IG51bWJlcjtcbiAgLyoqIElmIGB0cnVlYCwgdGhlIGN1cnJlbnQgbGluayBpcyBkaXNhYmxlZCAqL1xuICBkaXNhYmxlZDogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBBIGNvbnRleHQgZm9yIHRoZSBgcGFnZVRlbXBsYXRlYCBpbnB1dHMgZm9yIGxpbmsgdGVtcGxhdGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYWdpbmF0aW9uTnVtYmVyTGlua0NvbnRleHQgZXh0ZW5kcyBQYWdpbmF0aW9uTGlua0NvbnRleHQge1xuICAvKiogQ29udGFpbiB0aGUgcGFnZSBpbmZvcm1hdGlvbiAqL1xuICAkaW1wbGljaXQ6IFBhZ2VzTW9kZWw7XG59XG4iXX0=