@swisspost/internet-header 1.7.0 → 1.7.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 (267) hide show
  1. package/dist/cjs/{index-eb482698.js → index-92e9d4f8.js} +75 -22
  2. package/dist/cjs/index-92e9d4f8.js.map +1 -0
  3. package/dist/cjs/{klp-widget.controller-5d5afa10.js → klp-widget.controller-d23f72bb.js} +784 -1047
  4. package/dist/cjs/klp-widget.controller-d23f72bb.js.map +1 -0
  5. package/dist/cjs/{language.service-830d8d9b.js → language.service-dcd7bae3.js} +17 -2
  6. package/dist/cjs/language.service-dcd7bae3.js.map +1 -0
  7. package/dist/cjs/loader.cjs.js +2 -2
  8. package/dist/cjs/loader.cjs.js.map +1 -1
  9. package/dist/cjs/post-klp-login-widget.cjs.entry.js +4 -4
  10. package/dist/cjs/post-language-switch.cjs.entry.js +22 -17
  11. package/dist/cjs/post-language-switch.cjs.entry.js.map +1 -1
  12. package/dist/cjs/post-logo.cjs.entry.js +2 -2
  13. package/dist/cjs/post-main-navigation.cjs.entry.js +26 -29
  14. package/dist/cjs/post-main-navigation.cjs.entry.js.map +1 -1
  15. package/dist/cjs/post-meta-navigation.cjs.entry.js +5 -5
  16. package/dist/cjs/post-meta-navigation.cjs.entry.js.map +1 -1
  17. package/dist/cjs/post-search.cjs.entry.js +9 -7
  18. package/dist/cjs/post-search.cjs.entry.js.map +1 -1
  19. package/dist/cjs/post-skiplinks.cjs.entry.js +5 -5
  20. package/dist/cjs/post-skiplinks.cjs.entry.js.map +1 -1
  21. package/dist/cjs/{store-a866bc4a.js → store-638313d5.js} +2 -2
  22. package/dist/cjs/{store-a866bc4a.js.map → store-638313d5.js.map} +1 -1
  23. package/dist/cjs/{svg-icon.component-83a42c36.js → svg-icon.component-f07628a9.js} +2 -2
  24. package/dist/cjs/{svg-icon.component-83a42c36.js.map → svg-icon.component-f07628a9.js.map} +1 -1
  25. package/dist/cjs/{svg-sprite.component-b8f7a7a7.js → svg-sprite.component-dc8e2e95.js} +2 -2
  26. package/dist/cjs/{svg-sprite.component-b8f7a7a7.js.map → svg-sprite.component-dc8e2e95.js.map} +1 -1
  27. package/dist/cjs/swisspost-internet-breadcrumbs.cjs.entry.js +8 -8
  28. package/dist/cjs/swisspost-internet-breadcrumbs.cjs.entry.js.map +1 -1
  29. package/dist/cjs/swisspost-internet-footer.cjs.entry.js +3 -3
  30. package/dist/cjs/swisspost-internet-header.cjs.entry.js +20 -20
  31. package/dist/cjs/swisspost-internet-header.cjs.entry.js.map +1 -1
  32. package/dist/cjs/swisspost-internet-header.cjs.js +2 -2
  33. package/dist/cjs/swisspost-internet-header.cjs.js.map +1 -1
  34. package/dist/collection/assets/i18n/translations.js +15 -0
  35. package/dist/collection/assets/i18n/translations.js.map +1 -1
  36. package/dist/collection/collection-manifest.json +1 -1
  37. package/dist/collection/components/post-internet-breadcrumbs/components/middle-dropdown.component.js +1 -1
  38. package/dist/collection/components/post-internet-breadcrumbs/components/middle-dropdown.component.js.map +1 -1
  39. package/dist/collection/components/post-internet-breadcrumbs/post-internet-breadcrumbs.js +1 -1
  40. package/dist/collection/components/post-internet-breadcrumbs/post-internet-breadcrumbs.js.map +1 -1
  41. package/dist/collection/components/post-internet-header/post-internet-header.js +2 -1
  42. package/dist/collection/components/post-internet-header/post-internet-header.js.map +1 -1
  43. package/dist/collection/components/post-language-switch/components/post-language-switch-list.js +13 -6
  44. package/dist/collection/components/post-language-switch/components/post-language-switch-list.js.map +1 -1
  45. package/dist/collection/components/post-language-switch/post-language-switch.js +1 -1
  46. package/dist/collection/components/post-language-switch/post-language-switch.js.map +1 -1
  47. package/dist/collection/components/post-main-navigation/components/level-one-action.component.js +2 -1
  48. package/dist/collection/components/post-main-navigation/components/level-one-action.component.js.map +1 -1
  49. package/dist/collection/components/post-main-navigation/post-main-navigation.js +21 -25
  50. package/dist/collection/components/post-main-navigation/post-main-navigation.js.map +1 -1
  51. package/dist/collection/components/post-meta-navigation/post-meta-navigation.js +3 -3
  52. package/dist/collection/components/post-meta-navigation/post-meta-navigation.js.map +1 -1
  53. package/dist/collection/components/post-search/post-search.css +53 -52
  54. package/dist/collection/components/post-search/post-search.js +4 -2
  55. package/dist/collection/components/post-search/post-search.js.map +1 -1
  56. package/dist/collection/components/post-skiplinks/post-skiplinks.js +1 -1
  57. package/dist/collection/components/post-skiplinks/post-skiplinks.js.map +1 -1
  58. package/dist/components/klp-widget.controller.js +783 -1046
  59. package/dist/components/klp-widget.controller.js.map +1 -1
  60. package/dist/components/language.service.js +15 -0
  61. package/dist/components/language.service.js.map +1 -1
  62. package/dist/components/post-language-switch2.js +17 -12
  63. package/dist/components/post-language-switch2.js.map +1 -1
  64. package/dist/components/post-main-navigation2.js +22 -25
  65. package/dist/components/post-main-navigation2.js.map +1 -1
  66. package/dist/components/post-meta-navigation2.js +3 -3
  67. package/dist/components/post-meta-navigation2.js.map +1 -1
  68. package/dist/components/post-search2.js +5 -3
  69. package/dist/components/post-search2.js.map +1 -1
  70. package/dist/components/post-skiplinks2.js +1 -1
  71. package/dist/components/post-skiplinks2.js.map +1 -1
  72. package/dist/components/store.js.map +1 -1
  73. package/dist/components/swisspost-internet-breadcrumbs.js +3 -3
  74. package/dist/components/swisspost-internet-breadcrumbs.js.map +1 -1
  75. package/dist/components/swisspost-internet-header.js +16 -16
  76. package/dist/components/swisspost-internet-header.js.map +1 -1
  77. package/dist/esm/{index-78606a15.js → index-35186c69.js} +75 -22
  78. package/dist/esm/index-35186c69.js.map +1 -0
  79. package/dist/esm/{klp-widget.controller-9f7e3c54.js → klp-widget.controller-945d9271.js} +784 -1047
  80. package/dist/esm/klp-widget.controller-945d9271.js.map +1 -0
  81. package/dist/esm/{language.service-b62eadfa.js → language.service-55e5ef74.js} +17 -2
  82. package/dist/esm/language.service-55e5ef74.js.map +1 -0
  83. package/dist/esm/loader.js +3 -3
  84. package/dist/esm/loader.js.map +1 -1
  85. package/dist/esm/post-klp-login-widget.entry.js +4 -4
  86. package/dist/esm/post-language-switch.entry.js +22 -17
  87. package/dist/esm/post-language-switch.entry.js.map +1 -1
  88. package/dist/esm/post-logo.entry.js +2 -2
  89. package/dist/esm/post-main-navigation.entry.js +26 -29
  90. package/dist/esm/post-main-navigation.entry.js.map +1 -1
  91. package/dist/esm/post-meta-navigation.entry.js +5 -5
  92. package/dist/esm/post-meta-navigation.entry.js.map +1 -1
  93. package/dist/esm/post-search.entry.js +9 -7
  94. package/dist/esm/post-search.entry.js.map +1 -1
  95. package/dist/esm/post-skiplinks.entry.js +5 -5
  96. package/dist/esm/post-skiplinks.entry.js.map +1 -1
  97. package/dist/esm/{store-17acb817.js → store-b78e2d3b.js} +2 -2
  98. package/dist/esm/{store-17acb817.js.map → store-b78e2d3b.js.map} +1 -1
  99. package/dist/esm/{svg-icon.component-1497ec37.js → svg-icon.component-7bac7397.js} +2 -2
  100. package/dist/esm/{svg-icon.component-1497ec37.js.map → svg-icon.component-7bac7397.js.map} +1 -1
  101. package/dist/esm/{svg-sprite.component-bbdea5b3.js → svg-sprite.component-f319da57.js} +2 -2
  102. package/dist/esm/{svg-sprite.component-bbdea5b3.js.map → svg-sprite.component-f319da57.js.map} +1 -1
  103. package/dist/esm/swisspost-internet-breadcrumbs.entry.js +8 -8
  104. package/dist/esm/swisspost-internet-breadcrumbs.entry.js.map +1 -1
  105. package/dist/esm/swisspost-internet-footer.entry.js +3 -3
  106. package/dist/esm/swisspost-internet-header.entry.js +20 -20
  107. package/dist/esm/swisspost-internet-header.entry.js.map +1 -1
  108. package/dist/esm/swisspost-internet-header.js +3 -3
  109. package/dist/esm/swisspost-internet-header.js.map +1 -1
  110. package/dist/esm-es5/index-35186c69.js +3 -0
  111. package/dist/esm-es5/index-35186c69.js.map +1 -0
  112. package/dist/esm-es5/klp-widget.controller-945d9271.js +13 -0
  113. package/dist/esm-es5/klp-widget.controller-945d9271.js.map +1 -0
  114. package/dist/esm-es5/language.service-55e5ef74.js +2 -0
  115. package/dist/esm-es5/language.service-55e5ef74.js.map +1 -0
  116. package/dist/esm-es5/loader.js +1 -1
  117. package/dist/esm-es5/loader.js.map +1 -1
  118. package/dist/esm-es5/post-klp-login-widget.entry.js +1 -1
  119. package/dist/esm-es5/post-language-switch.entry.js +1 -1
  120. package/dist/esm-es5/post-language-switch.entry.js.map +1 -1
  121. package/dist/esm-es5/post-logo.entry.js +1 -1
  122. package/dist/esm-es5/post-main-navigation.entry.js +1 -1
  123. package/dist/esm-es5/post-main-navigation.entry.js.map +1 -1
  124. package/dist/esm-es5/post-meta-navigation.entry.js +1 -1
  125. package/dist/esm-es5/post-meta-navigation.entry.js.map +1 -1
  126. package/dist/esm-es5/post-search.entry.js +1 -1
  127. package/dist/esm-es5/post-search.entry.js.map +1 -1
  128. package/dist/esm-es5/post-skiplinks.entry.js +1 -1
  129. package/dist/esm-es5/post-skiplinks.entry.js.map +1 -1
  130. package/dist/esm-es5/{store-17acb817.js → store-b78e2d3b.js} +2 -2
  131. package/dist/esm-es5/{store-17acb817.js.map → store-b78e2d3b.js.map} +1 -1
  132. package/dist/esm-es5/svg-icon.component-7bac7397.js +2 -0
  133. package/dist/esm-es5/{svg-sprite.component-bbdea5b3.js → svg-sprite.component-f319da57.js} +2 -2
  134. package/dist/esm-es5/swisspost-internet-breadcrumbs.entry.js +3 -3
  135. package/dist/esm-es5/swisspost-internet-breadcrumbs.entry.js.map +1 -1
  136. package/dist/esm-es5/swisspost-internet-footer.entry.js +1 -1
  137. package/dist/esm-es5/swisspost-internet-header.entry.js +1 -1
  138. package/dist/esm-es5/swisspost-internet-header.entry.js.map +1 -1
  139. package/dist/esm-es5/swisspost-internet-header.js +1 -1
  140. package/dist/esm-es5/swisspost-internet-header.js.map +1 -1
  141. package/dist/swisspost-internet-header/{p-208f6e0d.system.entry.js → p-02bb40cf.system.entry.js} +2 -2
  142. package/dist/swisspost-internet-header/{p-03f017ef.system.entry.js → p-055f51f2.system.entry.js} +2 -2
  143. package/dist/swisspost-internet-header/p-0d7864f3.js +13 -0
  144. package/dist/swisspost-internet-header/p-0d7864f3.js.map +1 -0
  145. package/dist/swisspost-internet-header/p-1195cffa.entry.js +2 -0
  146. package/dist/swisspost-internet-header/p-1195cffa.entry.js.map +1 -0
  147. package/dist/swisspost-internet-header/p-1c0ba4e8.system.entry.js +2 -0
  148. package/dist/swisspost-internet-header/p-1c0ba4e8.system.entry.js.map +1 -0
  149. package/dist/swisspost-internet-header/{p-10df5210.js → p-22e64bf2.js} +2 -2
  150. package/dist/swisspost-internet-header/{p-10df5210.js.map → p-22e64bf2.js.map} +1 -1
  151. package/dist/swisspost-internet-header/p-242b61d1.system.js +2 -0
  152. package/dist/swisspost-internet-header/p-242b61d1.system.js.map +1 -0
  153. package/dist/swisspost-internet-header/p-2945db6c.js +3 -0
  154. package/dist/swisspost-internet-header/p-2945db6c.js.map +1 -0
  155. package/dist/swisspost-internet-header/p-30695393.entry.js +7 -0
  156. package/dist/swisspost-internet-header/{p-caaccb1b.entry.js.map → p-30695393.entry.js.map} +1 -1
  157. package/dist/swisspost-internet-header/p-32fe68f0.js +2 -0
  158. package/dist/swisspost-internet-header/p-3462fe1c.entry.js +2 -0
  159. package/dist/swisspost-internet-header/p-3462fe1c.entry.js.map +1 -0
  160. package/dist/swisspost-internet-header/{p-3d4741e0.system.js → p-3819c4ce.system.js} +2 -2
  161. package/dist/swisspost-internet-header/{p-3d4741e0.system.js.map → p-3819c4ce.system.js.map} +1 -1
  162. package/dist/swisspost-internet-header/p-3cabcfa7.entry.js +2 -0
  163. package/dist/swisspost-internet-header/p-3cabcfa7.entry.js.map +1 -0
  164. package/dist/swisspost-internet-header/p-3df8cabd.system.entry.js +2 -0
  165. package/dist/swisspost-internet-header/p-3df8cabd.system.entry.js.map +1 -0
  166. package/dist/swisspost-internet-header/{p-d05c1317.system.js → p-49fe20ff.system.js} +2 -2
  167. package/dist/swisspost-internet-header/{p-d05c1317.system.js.map → p-49fe20ff.system.js.map} +1 -1
  168. package/dist/swisspost-internet-header/p-4c9f1f1a.system.entry.js +7 -0
  169. package/dist/swisspost-internet-header/{p-2d6bb138.system.entry.js.map → p-4c9f1f1a.system.entry.js.map} +1 -1
  170. package/dist/swisspost-internet-header/{p-ee5ae350.system.js → p-4d015bfc.system.js} +2 -2
  171. package/dist/swisspost-internet-header/{p-248800c9.system.entry.js → p-57f4eea0.system.entry.js} +2 -2
  172. package/dist/swisspost-internet-header/p-5e9ba287.system.js +3 -0
  173. package/dist/swisspost-internet-header/p-5e9ba287.system.js.map +1 -0
  174. package/dist/swisspost-internet-header/p-6582303e.js +2 -0
  175. package/dist/swisspost-internet-header/p-6582303e.js.map +1 -0
  176. package/dist/swisspost-internet-header/{p-491deab8.entry.js → p-6a22a9c3.entry.js} +2 -2
  177. package/dist/swisspost-internet-header/p-73208b0d.system.entry.js +2 -0
  178. package/dist/swisspost-internet-header/p-73208b0d.system.entry.js.map +1 -0
  179. package/dist/swisspost-internet-header/{p-6ae971d9.system.js → p-91035a2a.system.js} +2 -2
  180. package/dist/swisspost-internet-header/p-96623613.system.entry.js +2 -0
  181. package/dist/swisspost-internet-header/p-96623613.system.entry.js.map +1 -0
  182. package/dist/swisspost-internet-header/{p-03a31033.entry.js → p-99228f51.entry.js} +2 -2
  183. package/dist/swisspost-internet-header/p-99228f51.entry.js.map +1 -0
  184. package/dist/swisspost-internet-header/p-9a6083cb.entry.js +2 -0
  185. package/dist/swisspost-internet-header/p-9a6083cb.entry.js.map +1 -0
  186. package/dist/swisspost-internet-header/p-afdd23a8.system.entry.js +2 -0
  187. package/dist/swisspost-internet-header/p-afdd23a8.system.entry.js.map +1 -0
  188. package/dist/swisspost-internet-header/p-b8d05765.system.js +13 -0
  189. package/dist/swisspost-internet-header/p-b8d05765.system.js.map +1 -0
  190. package/dist/swisspost-internet-header/{p-f7e7c0ff.entry.js → p-b9bcb22a.entry.js} +2 -2
  191. package/dist/swisspost-internet-header/p-d5d1f301.entry.js +2 -0
  192. package/dist/swisspost-internet-header/p-d5d1f301.entry.js.map +1 -0
  193. package/dist/swisspost-internet-header/{p-f98e732f.js → p-e2db30e1.js} +2 -2
  194. package/dist/swisspost-internet-header/{p-7198fb8e.entry.js → p-e95ed009.entry.js} +2 -2
  195. package/dist/swisspost-internet-header/{p-7d94c528.system.entry.js → p-f349687c.system.entry.js} +2 -2
  196. package/dist/swisspost-internet-header/p-f349687c.system.entry.js.map +1 -0
  197. package/dist/swisspost-internet-header/swisspost-internet-header.css +1 -1
  198. package/dist/swisspost-internet-header/swisspost-internet-header.esm.js +1 -1
  199. package/dist/swisspost-internet-header/swisspost-internet-header.esm.js.map +1 -1
  200. package/dist/swisspost-internet-header/swisspost-internet-header.js +1 -1
  201. package/dist/types/assets/i18n/translations.d.ts +15 -0
  202. package/dist/types/components/post-main-navigation/post-main-navigation.d.ts +1 -7
  203. package/dist/types/services/language.service.d.ts +19 -1
  204. package/dist/types/stencil-public-runtime.d.ts +1 -0
  205. package/package.json +14 -14
  206. package/dist/cjs/index-eb482698.js.map +0 -1
  207. package/dist/cjs/klp-widget.controller-5d5afa10.js.map +0 -1
  208. package/dist/cjs/language.service-830d8d9b.js.map +0 -1
  209. package/dist/esm/index-78606a15.js.map +0 -1
  210. package/dist/esm/klp-widget.controller-9f7e3c54.js.map +0 -1
  211. package/dist/esm/language.service-b62eadfa.js.map +0 -1
  212. package/dist/esm-es5/index-78606a15.js +0 -3
  213. package/dist/esm-es5/index-78606a15.js.map +0 -1
  214. package/dist/esm-es5/klp-widget.controller-9f7e3c54.js +0 -27
  215. package/dist/esm-es5/klp-widget.controller-9f7e3c54.js.map +0 -1
  216. package/dist/esm-es5/language.service-b62eadfa.js +0 -2
  217. package/dist/esm-es5/language.service-b62eadfa.js.map +0 -1
  218. package/dist/esm-es5/svg-icon.component-1497ec37.js +0 -2
  219. package/dist/swisspost-internet-header/p-03a31033.entry.js.map +0 -1
  220. package/dist/swisspost-internet-header/p-0f245a12.js +0 -2
  221. package/dist/swisspost-internet-header/p-1be304cd.js +0 -2
  222. package/dist/swisspost-internet-header/p-1be304cd.js.map +0 -1
  223. package/dist/swisspost-internet-header/p-1d492bf7.system.entry.js +0 -2
  224. package/dist/swisspost-internet-header/p-1d492bf7.system.entry.js.map +0 -1
  225. package/dist/swisspost-internet-header/p-1e5511b0.system.js +0 -2
  226. package/dist/swisspost-internet-header/p-1e5511b0.system.js.map +0 -1
  227. package/dist/swisspost-internet-header/p-20d95fad.system.entry.js +0 -2
  228. package/dist/swisspost-internet-header/p-20d95fad.system.entry.js.map +0 -1
  229. package/dist/swisspost-internet-header/p-2d6bb138.system.entry.js +0 -7
  230. package/dist/swisspost-internet-header/p-536e6ce1.entry.js +0 -2
  231. package/dist/swisspost-internet-header/p-536e6ce1.entry.js.map +0 -1
  232. package/dist/swisspost-internet-header/p-7d94c528.system.entry.js.map +0 -1
  233. package/dist/swisspost-internet-header/p-8e7844f9.system.js +0 -3
  234. package/dist/swisspost-internet-header/p-8e7844f9.system.js.map +0 -1
  235. package/dist/swisspost-internet-header/p-9bbabe3d.entry.js +0 -2
  236. package/dist/swisspost-internet-header/p-9bbabe3d.entry.js.map +0 -1
  237. package/dist/swisspost-internet-header/p-9e003388.js +0 -3
  238. package/dist/swisspost-internet-header/p-9e003388.js.map +0 -1
  239. package/dist/swisspost-internet-header/p-a6cde721.system.entry.js +0 -2
  240. package/dist/swisspost-internet-header/p-a6cde721.system.entry.js.map +0 -1
  241. package/dist/swisspost-internet-header/p-ad7071ea.system.js +0 -27
  242. package/dist/swisspost-internet-header/p-ad7071ea.system.js.map +0 -1
  243. package/dist/swisspost-internet-header/p-c6df26bc.system.entry.js +0 -2
  244. package/dist/swisspost-internet-header/p-c6df26bc.system.entry.js.map +0 -1
  245. package/dist/swisspost-internet-header/p-caaccb1b.entry.js +0 -7
  246. package/dist/swisspost-internet-header/p-d18bd8c3.system.entry.js +0 -2
  247. package/dist/swisspost-internet-header/p-d18bd8c3.system.entry.js.map +0 -1
  248. package/dist/swisspost-internet-header/p-d4c4656c.entry.js +0 -2
  249. package/dist/swisspost-internet-header/p-d4c4656c.entry.js.map +0 -1
  250. package/dist/swisspost-internet-header/p-e350a2cd.entry.js +0 -2
  251. package/dist/swisspost-internet-header/p-e350a2cd.entry.js.map +0 -1
  252. package/dist/swisspost-internet-header/p-fdbd28fa.entry.js +0 -2
  253. package/dist/swisspost-internet-header/p-fdbd28fa.entry.js.map +0 -1
  254. package/dist/swisspost-internet-header/p-fefa1082.js +0 -27
  255. package/dist/swisspost-internet-header/p-fefa1082.js.map +0 -1
  256. /package/dist/esm-es5/{svg-icon.component-1497ec37.js.map → svg-icon.component-7bac7397.js.map} +0 -0
  257. /package/dist/esm-es5/{svg-sprite.component-bbdea5b3.js.map → svg-sprite.component-f319da57.js.map} +0 -0
  258. /package/dist/swisspost-internet-header/{p-208f6e0d.system.entry.js.map → p-02bb40cf.system.entry.js.map} +0 -0
  259. /package/dist/swisspost-internet-header/{p-03f017ef.system.entry.js.map → p-055f51f2.system.entry.js.map} +0 -0
  260. /package/dist/swisspost-internet-header/{p-0f245a12.js.map → p-32fe68f0.js.map} +0 -0
  261. /package/dist/swisspost-internet-header/{p-ee5ae350.system.js.map → p-4d015bfc.system.js.map} +0 -0
  262. /package/dist/swisspost-internet-header/{p-248800c9.system.entry.js.map → p-57f4eea0.system.entry.js.map} +0 -0
  263. /package/dist/swisspost-internet-header/{p-491deab8.entry.js.map → p-6a22a9c3.entry.js.map} +0 -0
  264. /package/dist/swisspost-internet-header/{p-6ae971d9.system.js.map → p-91035a2a.system.js.map} +0 -0
  265. /package/dist/swisspost-internet-header/{p-f7e7c0ff.entry.js.map → p-b9bcb22a.entry.js.map} +0 -0
  266. /package/dist/swisspost-internet-header/{p-f98e732f.js.map → p-e2db30e1.js.map} +0 -0
  267. /package/dist/swisspost-internet-header/{p-7198fb8e.entry.js.map → p-e95ed009.entry.js.map} +0 -0
@@ -5297,17 +5297,14 @@ const _commonjsHelpers = require('./_commonjsHelpers-537d719a.js');
5297
5297
 
5298
5298
  var jquery_slim = _commonjsHelpers.createCommonjsModule(function (module) {
5299
5299
  /*!
5300
- * jQuery JavaScript Library v3.6.4 -ajax,-ajax/jsonp,-ajax/load,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-deprecated/ajax-event-alias,-effects,-effects/animatedSelector,-effects/Tween
5300
+ * jQuery JavaScript Library v3.7.0 -ajax,-ajax/jsonp,-ajax/load,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-deprecated/ajax-event-alias,-effects,-effects/animatedSelector,-effects/Tween
5301
5301
  * https://jquery.com/
5302
5302
  *
5303
- * Includes Sizzle.js
5304
- * https://sizzlejs.com/
5305
- *
5306
5303
  * Copyright OpenJS Foundation and other contributors
5307
5304
  * Released under the MIT license
5308
5305
  * https://jquery.org/license
5309
5306
  *
5310
- * Date: 2023-03-08T15:29Z
5307
+ * Date: 2023-05-11T18:29Z
5311
5308
  */
5312
5309
  ( function( global, factory ) {
5313
5310
 
@@ -5438,8 +5435,9 @@ function toType( obj ) {
5438
5435
 
5439
5436
 
5440
5437
 
5441
- var
5442
- version = "3.6.4 -ajax,-ajax/jsonp,-ajax/load,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-deprecated/ajax-event-alias,-effects,-effects/animatedSelector,-effects/Tween",
5438
+ var version = "3.7.0 -ajax,-ajax/jsonp,-ajax/load,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-deprecated/ajax-event-alias,-effects,-effects/animatedSelector,-effects/Tween",
5439
+
5440
+ rhtmlSuffix = /HTML$/i,
5443
5441
 
5444
5442
  // Define a local copy of jQuery
5445
5443
  jQuery = function( selector, context ) {
@@ -5685,6 +5683,33 @@ jQuery.extend( {
5685
5683
  return obj;
5686
5684
  },
5687
5685
 
5686
+
5687
+ // Retrieve the text value of an array of DOM nodes
5688
+ text: function( elem ) {
5689
+ var node,
5690
+ ret = "",
5691
+ i = 0,
5692
+ nodeType = elem.nodeType;
5693
+
5694
+ if ( !nodeType ) {
5695
+
5696
+ // If no nodeType, this is expected to be an array
5697
+ while ( ( node = elem[ i++ ] ) ) {
5698
+
5699
+ // Do not traverse comment nodes
5700
+ ret += jQuery.text( node );
5701
+ }
5702
+ } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
5703
+ return elem.textContent;
5704
+ } else if ( nodeType === 3 || nodeType === 4 ) {
5705
+ return elem.nodeValue;
5706
+ }
5707
+
5708
+ // Do not include comment or processing instruction nodes
5709
+
5710
+ return ret;
5711
+ },
5712
+
5688
5713
  // results is for internal usage only
5689
5714
  makeArray: function( arr, results ) {
5690
5715
  var ret = results || [];
@@ -5707,6 +5732,15 @@ jQuery.extend( {
5707
5732
  return arr == null ? -1 : indexOf.call( arr, elem, i );
5708
5733
  },
5709
5734
 
5735
+ isXMLDoc: function( elem ) {
5736
+ var namespace = elem && elem.namespaceURI,
5737
+ docElem = elem && ( elem.ownerDocument || elem ).documentElement;
5738
+
5739
+ // Assume HTML when documentElement doesn't yet exist, such as inside
5740
+ // document fragments.
5741
+ return !rhtmlSuffix.test( namespace || docElem && docElem.nodeName || "HTML" );
5742
+ },
5743
+
5710
5744
  // Support: Android <=4.0 only, PhantomJS 1 only
5711
5745
  // push.apply(_, arraylike) throws on ancient WebKit
5712
5746
  merge: function( first, second ) {
@@ -5808,43 +5842,98 @@ function isArrayLike( obj ) {
5808
5842
  return type === "array" || length === 0 ||
5809
5843
  typeof length === "number" && length > 0 && ( length - 1 ) in obj;
5810
5844
  }
5811
- var Sizzle =
5812
- /*!
5813
- * Sizzle CSS Selector Engine v2.3.10
5814
- * https://sizzlejs.com/
5815
- *
5816
- * Copyright JS Foundation and other contributors
5817
- * Released under the MIT license
5818
- * https://js.foundation/
5819
- *
5820
- * Date: 2023-02-14
5821
- */
5822
- ( function( window ) {
5845
+
5846
+
5847
+ function nodeName( elem, name ) {
5848
+
5849
+ return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
5850
+
5851
+ }
5852
+ var pop = arr.pop;
5853
+
5854
+
5855
+ var sort = arr.sort;
5856
+
5857
+
5858
+ var splice = arr.splice;
5859
+
5860
+
5861
+ var whitespace = "[\\x20\\t\\r\\n\\f]";
5862
+
5863
+
5864
+ var rtrimCSS = new RegExp(
5865
+ "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$",
5866
+ "g"
5867
+ );
5868
+
5869
+
5870
+
5871
+
5872
+ // Note: an element does not contain itself
5873
+ jQuery.contains = function( a, b ) {
5874
+ var bup = b && b.parentNode;
5875
+
5876
+ return a === bup || !!( bup && bup.nodeType === 1 && (
5877
+
5878
+ // Support: IE 9 - 11+
5879
+ // IE doesn't have `contains` on SVG.
5880
+ a.contains ?
5881
+ a.contains( bup ) :
5882
+ a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
5883
+ ) );
5884
+ };
5885
+
5886
+
5887
+
5888
+
5889
+ // CSS string/identifier serialization
5890
+ // https://drafts.csswg.org/cssom/#common-serializing-idioms
5891
+ var rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g;
5892
+
5893
+ function fcssescape( ch, asCodePoint ) {
5894
+ if ( asCodePoint ) {
5895
+
5896
+ // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
5897
+ if ( ch === "\0" ) {
5898
+ return "\uFFFD";
5899
+ }
5900
+
5901
+ // Control characters and (dependent upon position) numbers get escaped as code points
5902
+ return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
5903
+ }
5904
+
5905
+ // Other potentially-special ASCII characters get backslash-escaped
5906
+ return "\\" + ch;
5907
+ }
5908
+
5909
+ jQuery.escapeSelector = function( sel ) {
5910
+ return ( sel + "" ).replace( rcssescape, fcssescape );
5911
+ };
5912
+
5913
+
5914
+
5915
+
5916
+ var preferredDoc = document,
5917
+ pushNative = push;
5918
+
5919
+ ( function() {
5920
+
5823
5921
  var i,
5824
- support,
5825
5922
  Expr,
5826
- getText,
5827
- isXML,
5828
- tokenize,
5829
- compile,
5830
- select,
5831
5923
  outermostContext,
5832
5924
  sortInput,
5833
5925
  hasDuplicate,
5926
+ push = pushNative,
5834
5927
 
5835
5928
  // Local document vars
5836
- setDocument,
5837
5929
  document,
5838
- docElem,
5930
+ documentElement,
5839
5931
  documentIsHTML,
5840
5932
  rbuggyQSA,
5841
- rbuggyMatches,
5842
5933
  matches,
5843
- contains,
5844
5934
 
5845
5935
  // Instance-specific data
5846
- expando = "sizzle" + 1 * new Date(),
5847
- preferredDoc = window.document,
5936
+ expando = jQuery.expando,
5848
5937
  dirruns = 0,
5849
5938
  done = 0,
5850
5939
  classCache = createCache(),
@@ -5858,47 +5947,22 @@ var i,
5858
5947
  return 0;
5859
5948
  },
5860
5949
 
5861
- // Instance methods
5862
- hasOwn = ( {} ).hasOwnProperty,
5863
- arr = [],
5864
- pop = arr.pop,
5865
- pushNative = arr.push,
5866
- push = arr.push,
5867
- slice = arr.slice,
5868
-
5869
- // Use a stripped-down indexOf as it's faster than native
5870
- // https://jsperf.com/thor-indexof-vs-for/5
5871
- indexOf = function( list, elem ) {
5872
- var i = 0,
5873
- len = list.length;
5874
- for ( ; i < len; i++ ) {
5875
- if ( list[ i ] === elem ) {
5876
- return i;
5877
- }
5878
- }
5879
- return -1;
5880
- },
5881
-
5882
- booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|" +
5883
- "ismap|loop|multiple|open|readonly|required|scoped",
5950
+ booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|" +
5951
+ "loop|multiple|open|readonly|required|scoped",
5884
5952
 
5885
5953
  // Regular expressions
5886
5954
 
5887
- // http://www.w3.org/TR/css3-selectors/#whitespace
5888
- whitespace = "[\\x20\\t\\r\\n\\f]",
5889
-
5890
5955
  // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram
5891
5956
  identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace +
5892
5957
  "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",
5893
5958
 
5894
- // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
5959
+ // Attribute selectors: https://www.w3.org/TR/selectors/#attribute-selectors
5895
5960
  attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
5896
5961
 
5897
5962
  // Operator (capture 2)
5898
5963
  "*([*^$|!~]?=)" + whitespace +
5899
5964
 
5900
- // "Attribute values must be CSS identifiers [capture 5]
5901
- // or strings [capture 3 or capture 4]"
5965
+ // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
5902
5966
  "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" +
5903
5967
  whitespace + "*\\]",
5904
5968
 
@@ -5917,101 +5981,88 @@ var i,
5917
5981
 
5918
5982
  // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
5919
5983
  rwhitespace = new RegExp( whitespace + "+", "g" ),
5920
- rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" +
5921
- whitespace + "+$", "g" ),
5922
5984
 
5923
5985
  rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
5924
- rleadingCombinator = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace +
5925
- "*" ),
5986
+ rleadingCombinator = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" +
5987
+ whitespace + "*" ),
5926
5988
  rdescend = new RegExp( whitespace + "|>" ),
5927
5989
 
5928
5990
  rpseudo = new RegExp( pseudos ),
5929
5991
  ridentifier = new RegExp( "^" + identifier + "$" ),
5930
5992
 
5931
5993
  matchExpr = {
5932
- "ID": new RegExp( "^#(" + identifier + ")" ),
5933
- "CLASS": new RegExp( "^\\.(" + identifier + ")" ),
5934
- "TAG": new RegExp( "^(" + identifier + "|[*])" ),
5935
- "ATTR": new RegExp( "^" + attributes ),
5936
- "PSEUDO": new RegExp( "^" + pseudos ),
5937
- "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" +
5938
- whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" +
5939
- whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
5940
- "bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
5994
+ ID: new RegExp( "^#(" + identifier + ")" ),
5995
+ CLASS: new RegExp( "^\\.(" + identifier + ")" ),
5996
+ TAG: new RegExp( "^(" + identifier + "|[*])" ),
5997
+ ATTR: new RegExp( "^" + attributes ),
5998
+ PSEUDO: new RegExp( "^" + pseudos ),
5999
+ CHILD: new RegExp(
6000
+ "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" +
6001
+ whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" +
6002
+ whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
6003
+ bool: new RegExp( "^(?:" + booleans + ")$", "i" ),
5941
6004
 
5942
6005
  // For use in libraries implementing .is()
5943
6006
  // We use this for POS matching in `select`
5944
- "needsContext": new RegExp( "^" + whitespace +
6007
+ needsContext: new RegExp( "^" + whitespace +
5945
6008
  "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace +
5946
6009
  "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
5947
6010
  },
5948
6011
 
5949
- rhtml = /HTML$/i,
5950
6012
  rinputs = /^(?:input|select|textarea|button)$/i,
5951
6013
  rheader = /^h\d$/i,
5952
6014
 
5953
- rnative = /^[^{]+\{\s*\[native \w/,
5954
-
5955
6015
  // Easily-parseable/retrievable ID or TAG or CLASS selectors
5956
6016
  rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
5957
6017
 
5958
6018
  rsibling = /[+~]/,
5959
6019
 
5960
6020
  // CSS escapes
5961
- // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
5962
- runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g" ),
6021
+ // https://www.w3.org/TR/CSS21/syndata.html#escaped-characters
6022
+ runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace +
6023
+ "?|\\\\([^\\r\\n\\f])", "g" ),
5963
6024
  funescape = function( escape, nonHex ) {
5964
6025
  var high = "0x" + escape.slice( 1 ) - 0x10000;
5965
6026
 
5966
- return nonHex ?
6027
+ if ( nonHex ) {
5967
6028
 
5968
6029
  // Strip the backslash prefix from a non-hex escape sequence
5969
- nonHex :
5970
-
5971
- // Replace a hexadecimal escape sequence with the encoded Unicode code point
5972
- // Support: IE <=11+
5973
- // For values outside the Basic Multilingual Plane (BMP), manually construct a
5974
- // surrogate pair
5975
- high < 0 ?
5976
- String.fromCharCode( high + 0x10000 ) :
5977
- String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
5978
- },
5979
-
5980
- // CSS string/identifier serialization
5981
- // https://drafts.csswg.org/cssom/#common-serializing-idioms
5982
- rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
5983
- fcssescape = function( ch, asCodePoint ) {
5984
- if ( asCodePoint ) {
5985
-
5986
- // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
5987
- if ( ch === "\0" ) {
5988
- return "\uFFFD";
5989
- }
5990
-
5991
- // Control characters and (dependent upon position) numbers get escaped as code points
5992
- return ch.slice( 0, -1 ) + "\\" +
5993
- ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
6030
+ return nonHex;
5994
6031
  }
5995
6032
 
5996
- // Other potentially-special ASCII characters get backslash-escaped
5997
- return "\\" + ch;
6033
+ // Replace a hexadecimal escape sequence with the encoded Unicode code point
6034
+ // Support: IE <=11+
6035
+ // For values outside the Basic Multilingual Plane (BMP), manually construct a
6036
+ // surrogate pair
6037
+ return high < 0 ?
6038
+ String.fromCharCode( high + 0x10000 ) :
6039
+ String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
5998
6040
  },
5999
6041
 
6000
- // Used for iframes
6001
- // See setDocument()
6042
+ // Used for iframes; see `setDocument`.
6043
+ // Support: IE 9 - 11+, Edge 12 - 18+
6002
6044
  // Removing the function wrapper causes a "Permission Denied"
6003
- // error in IE
6045
+ // error in IE/Edge.
6004
6046
  unloadHandler = function() {
6005
6047
  setDocument();
6006
6048
  },
6007
6049
 
6008
6050
  inDisabledFieldset = addCombinator(
6009
6051
  function( elem ) {
6010
- return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset";
6052
+ return elem.disabled === true && nodeName( elem, "fieldset" );
6011
6053
  },
6012
6054
  { dir: "parentNode", next: "legend" }
6013
6055
  );
6014
6056
 
6057
+ // Support: IE <=9 only
6058
+ // Accessing document.activeElement can throw unexpectedly
6059
+ // https://bugs.jquery.com/ticket/13393
6060
+ function safeActiveElement() {
6061
+ try {
6062
+ return document.activeElement;
6063
+ } catch ( err ) { }
6064
+ }
6065
+
6015
6066
  // Optimize for push.apply( _, NodeList )
6016
6067
  try {
6017
6068
  push.apply(
@@ -6019,27 +6070,17 @@ try {
6019
6070
  preferredDoc.childNodes
6020
6071
  );
6021
6072
  } catch ( e ) {
6022
- push = { apply: arr.length ?
6023
-
6024
- // Leverage slice if possible
6025
- function( target, els ) {
6073
+ push = {
6074
+ apply: function( target, els ) {
6026
6075
  pushNative.apply( target, slice.call( els ) );
6027
- } :
6028
-
6029
- // Support: IE<9
6030
- // Otherwise append directly
6031
- function( target, els ) {
6032
- var j = target.length,
6033
- i = 0;
6034
-
6035
- // Can't trust NodeList.length
6036
- while ( ( target[ j++ ] = els[ i++ ] ) ) {}
6037
- target.length = j - 1;
6076
+ },
6077
+ call: function( target ) {
6078
+ pushNative.apply( target, slice.call( arguments, 1 ) );
6038
6079
  }
6039
6080
  };
6040
6081
  }
6041
6082
 
6042
- function Sizzle( selector, context, results, seed ) {
6083
+ function find( selector, context, results, seed ) {
6043
6084
  var m, i, elem, nid, match, groups, newSelector,
6044
6085
  newContext = context && context.ownerDocument,
6045
6086
 
@@ -6073,11 +6114,10 @@ function Sizzle( selector, context, results, seed ) {
6073
6114
  if ( nodeType === 9 ) {
6074
6115
  if ( ( elem = context.getElementById( m ) ) ) {
6075
6116
 
6076
- // Support: IE, Opera, Webkit
6077
- // TODO: identify versions
6117
+ // Support: IE 9 only
6078
6118
  // getElementById can match elements by name instead of ID
6079
6119
  if ( elem.id === m ) {
6080
- results.push( elem );
6120
+ push.call( results, elem );
6081
6121
  return results;
6082
6122
  }
6083
6123
  } else {
@@ -6087,14 +6127,13 @@ function Sizzle( selector, context, results, seed ) {
6087
6127
  // Element context
6088
6128
  } else {
6089
6129
 
6090
- // Support: IE, Opera, Webkit
6091
- // TODO: identify versions
6130
+ // Support: IE 9 only
6092
6131
  // getElementById can match elements by name instead of ID
6093
6132
  if ( newContext && ( elem = newContext.getElementById( m ) ) &&
6094
- contains( context, elem ) &&
6133
+ find.contains( context, elem ) &&
6095
6134
  elem.id === m ) {
6096
6135
 
6097
- results.push( elem );
6136
+ push.call( results, elem );
6098
6137
  return results;
6099
6138
  }
6100
6139
  }
@@ -6105,22 +6144,15 @@ function Sizzle( selector, context, results, seed ) {
6105
6144
  return results;
6106
6145
 
6107
6146
  // Class selector
6108
- } else if ( ( m = match[ 3 ] ) && support.getElementsByClassName &&
6109
- context.getElementsByClassName ) {
6110
-
6147
+ } else if ( ( m = match[ 3 ] ) && context.getElementsByClassName ) {
6111
6148
  push.apply( results, context.getElementsByClassName( m ) );
6112
6149
  return results;
6113
6150
  }
6114
6151
  }
6115
6152
 
6116
6153
  // Take advantage of querySelectorAll
6117
- if ( support.qsa &&
6118
- !nonnativeSelectorCache[ selector + " " ] &&
6119
- ( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&
6120
-
6121
- // Support: IE 8 only
6122
- // Exclude object elements
6123
- ( nodeType !== 1 || context.nodeName.toLowerCase() !== "object" ) ) {
6154
+ if ( !nonnativeSelectorCache[ selector + " " ] &&
6155
+ ( !rbuggyQSA || !rbuggyQSA.test( selector ) ) ) {
6124
6156
 
6125
6157
  newSelector = selector;
6126
6158
  newContext = context;
@@ -6141,11 +6173,15 @@ function Sizzle( selector, context, results, seed ) {
6141
6173
 
6142
6174
  // We can use :scope instead of the ID hack if the browser
6143
6175
  // supports it & if we're not changing the context.
6144
- if ( newContext !== context || !support.scope ) {
6176
+ // Support: IE 11+, Edge 17 - 18+
6177
+ // IE/Edge sometimes throw a "Permission denied" error when
6178
+ // strict-comparing two documents; shallow comparisons work.
6179
+ // eslint-disable-next-line eqeqeq
6180
+ if ( newContext != context || !support.scope ) {
6145
6181
 
6146
6182
  // Capture the context ID, setting it first if necessary
6147
6183
  if ( ( nid = context.getAttribute( "id" ) ) ) {
6148
- nid = nid.replace( rcssescape, fcssescape );
6184
+ nid = jQuery.escapeSelector( nid );
6149
6185
  } else {
6150
6186
  context.setAttribute( "id", ( nid = expando ) );
6151
6187
  }
@@ -6178,7 +6214,7 @@ function Sizzle( selector, context, results, seed ) {
6178
6214
  }
6179
6215
 
6180
6216
  // All others
6181
- return select( selector.replace( rtrim, "$1" ), context, results, seed );
6217
+ return select( selector.replace( rtrimCSS, "$1" ), context, results, seed );
6182
6218
  }
6183
6219
 
6184
6220
  /**
@@ -6192,7 +6228,8 @@ function createCache() {
6192
6228
 
6193
6229
  function cache( key, value ) {
6194
6230
 
6195
- // Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
6231
+ // Use (key + " ") to avoid collision with native prototype properties
6232
+ // (see https://github.com/jquery/sizzle/issues/157)
6196
6233
  if ( keys.push( key + " " ) > Expr.cacheLength ) {
6197
6234
 
6198
6235
  // Only keep the most recent entries
@@ -6204,7 +6241,7 @@ function createCache() {
6204
6241
  }
6205
6242
 
6206
6243
  /**
6207
- * Mark a function for special use by Sizzle
6244
+ * Mark a function for special use by jQuery selector module
6208
6245
  * @param {Function} fn The function to mark
6209
6246
  */
6210
6247
  function markFunction( fn ) {
@@ -6235,56 +6272,13 @@ function assert( fn ) {
6235
6272
  }
6236
6273
  }
6237
6274
 
6238
- /**
6239
- * Adds the same handler for all of the specified attrs
6240
- * @param {String} attrs Pipe-separated list of attributes
6241
- * @param {Function} handler The method that will be applied
6242
- */
6243
- function addHandle( attrs, handler ) {
6244
- var arr = attrs.split( "|" ),
6245
- i = arr.length;
6246
-
6247
- while ( i-- ) {
6248
- Expr.attrHandle[ arr[ i ] ] = handler;
6249
- }
6250
- }
6251
-
6252
- /**
6253
- * Checks document order of two siblings
6254
- * @param {Element} a
6255
- * @param {Element} b
6256
- * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
6257
- */
6258
- function siblingCheck( a, b ) {
6259
- var cur = b && a,
6260
- diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
6261
- a.sourceIndex - b.sourceIndex;
6262
-
6263
- // Use IE sourceIndex if available on both nodes
6264
- if ( diff ) {
6265
- return diff;
6266
- }
6267
-
6268
- // Check if b follows a
6269
- if ( cur ) {
6270
- while ( ( cur = cur.nextSibling ) ) {
6271
- if ( cur === b ) {
6272
- return -1;
6273
- }
6274
- }
6275
- }
6276
-
6277
- return a ? 1 : -1;
6278
- }
6279
-
6280
6275
  /**
6281
6276
  * Returns a function to use in pseudos for input types
6282
6277
  * @param {String} type
6283
6278
  */
6284
6279
  function createInputPseudo( type ) {
6285
6280
  return function( elem ) {
6286
- var name = elem.nodeName.toLowerCase();
6287
- return name === "input" && elem.type === type;
6281
+ return nodeName( elem, "input" ) && elem.type === type;
6288
6282
  };
6289
6283
  }
6290
6284
 
@@ -6294,8 +6288,8 @@ function createInputPseudo( type ) {
6294
6288
  */
6295
6289
  function createButtonPseudo( type ) {
6296
6290
  return function( elem ) {
6297
- var name = elem.nodeName.toLowerCase();
6298
- return ( name === "input" || name === "button" ) && elem.type === type;
6291
+ return ( nodeName( elem, "input" ) || nodeName( elem, "button" ) ) &&
6292
+ elem.type === type;
6299
6293
  };
6300
6294
  }
6301
6295
 
@@ -6331,14 +6325,13 @@ function createDisabledPseudo( disabled ) {
6331
6325
  }
6332
6326
  }
6333
6327
 
6334
- // Support: IE 6 - 11
6328
+ // Support: IE 6 - 11+
6335
6329
  // Use the isDisabled shortcut property to check for disabled fieldset ancestors
6336
6330
  return elem.isDisabled === disabled ||
6337
6331
 
6338
6332
  // Where there is no isDisabled, check manually
6339
- /* jshint -W018 */
6340
6333
  elem.isDisabled !== !disabled &&
6341
- inDisabledFieldset( elem ) === disabled;
6334
+ inDisabledFieldset( elem ) === disabled;
6342
6335
  }
6343
6336
 
6344
6337
  return elem.disabled === disabled;
@@ -6378,7 +6371,7 @@ function createPositionalPseudo( fn ) {
6378
6371
  }
6379
6372
 
6380
6373
  /**
6381
- * Checks a node for validity as a Sizzle context
6374
+ * Checks a node for validity as a jQuery selector context
6382
6375
  * @param {Element|Object=} context
6383
6376
  * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
6384
6377
  */
@@ -6386,31 +6379,13 @@ function testContext( context ) {
6386
6379
  return context && typeof context.getElementsByTagName !== "undefined" && context;
6387
6380
  }
6388
6381
 
6389
- // Expose support vars for convenience
6390
- support = Sizzle.support = {};
6391
-
6392
- /**
6393
- * Detects XML nodes
6394
- * @param {Element|Object} elem An element or a document
6395
- * @returns {Boolean} True iff elem is a non-HTML XML node
6396
- */
6397
- isXML = Sizzle.isXML = function( elem ) {
6398
- var namespace = elem && elem.namespaceURI,
6399
- docElem = elem && ( elem.ownerDocument || elem ).documentElement;
6400
-
6401
- // Support: IE <=8
6402
- // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes
6403
- // https://bugs.jquery.com/ticket/4833
6404
- return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" );
6405
- };
6406
-
6407
6382
  /**
6408
6383
  * Sets document-related variables once based on the current document
6409
- * @param {Element|Object} [doc] An element or document object to use to set the document
6384
+ * @param {Element|Object} [node] An element or document object to use to set the document
6410
6385
  * @returns {Object} Returns the current document
6411
6386
  */
6412
- setDocument = Sizzle.setDocument = function( node ) {
6413
- var hasCompare, subWindow,
6387
+ function setDocument( node ) {
6388
+ var subWindow,
6414
6389
  doc = node ? node.ownerDocument || node : preferredDoc;
6415
6390
 
6416
6391
  // Return early if doc is invalid or already selected
@@ -6424,11 +6399,17 @@ setDocument = Sizzle.setDocument = function( node ) {
6424
6399
 
6425
6400
  // Update global variables
6426
6401
  document = doc;
6427
- docElem = document.documentElement;
6428
- documentIsHTML = !isXML( document );
6402
+ documentElement = document.documentElement;
6403
+ documentIsHTML = !jQuery.isXMLDoc( document );
6404
+
6405
+ // Support: iOS 7 only, IE 9 - 11+
6406
+ // Older browsers didn't support unprefixed `matches`.
6407
+ matches = documentElement.matches ||
6408
+ documentElement.webkitMatchesSelector ||
6409
+ documentElement.msMatchesSelector;
6429
6410
 
6430
6411
  // Support: IE 9 - 11+, Edge 12 - 18+
6431
- // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
6412
+ // Accessing iframe documents after unload throws "permission denied" errors (see trac-13936)
6432
6413
  // Support: IE 11+, Edge 17 - 18+
6433
6414
  // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
6434
6415
  // two documents; shallow comparisons work.
@@ -6436,29 +6417,35 @@ setDocument = Sizzle.setDocument = function( node ) {
6436
6417
  if ( preferredDoc != document &&
6437
6418
  ( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {
6438
6419
 
6439
- // Support: IE 11, Edge
6440
- if ( subWindow.addEventListener ) {
6441
- subWindow.addEventListener( "unload", unloadHandler, false );
6442
-
6443
- // Support: IE 9 - 10 only
6444
- } else if ( subWindow.attachEvent ) {
6445
- subWindow.attachEvent( "onunload", unloadHandler );
6446
- }
6420
+ // Support: IE 9 - 11+, Edge 12 - 18+
6421
+ subWindow.addEventListener( "unload", unloadHandler );
6447
6422
  }
6448
6423
 
6449
- // Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,
6450
- // Safari 4 - 5 only, Opera <=11.6 - 12.x only
6451
- // IE/Edge & older browsers don't support the :scope pseudo-class.
6452
- // Support: Safari 6.0 only
6453
- // Safari 6.0 supports :scope but it's an alias of :root there.
6454
- support.scope = assert( function( el ) {
6455
- docElem.appendChild( el ).appendChild( document.createElement( "div" ) );
6456
- return typeof el.querySelectorAll !== "undefined" &&
6457
- !el.querySelectorAll( ":scope fieldset div" ).length;
6424
+ // Support: IE <10
6425
+ // Check if getElementById returns elements by name
6426
+ // The broken getElementById methods don't pick up programmatically-set names,
6427
+ // so use a roundabout getElementsByName test
6428
+ support.getById = assert( function( el ) {
6429
+ documentElement.appendChild( el ).id = jQuery.expando;
6430
+ return !document.getElementsByName ||
6431
+ !document.getElementsByName( jQuery.expando ).length;
6432
+ } );
6433
+
6434
+ // Support: IE 9 only
6435
+ // Check to see if it's possible to do matchesSelector
6436
+ // on a disconnected node.
6437
+ support.disconnectedMatch = assert( function( el ) {
6438
+ return matches.call( el, "*" );
6439
+ } );
6440
+
6441
+ // Support: IE 9 - 11+, Edge 12 - 18+
6442
+ // IE/Edge don't support the :scope pseudo-class.
6443
+ support.scope = assert( function() {
6444
+ return document.querySelectorAll( ":scope" );
6458
6445
  } );
6459
6446
 
6460
- // Support: Chrome 105 - 110+, Safari 15.4 - 16.3+
6461
- // Make sure the the `:has()` argument is parsed unforgivingly.
6447
+ // Support: Chrome 105 - 111 only, Safari 15.4 - 16.3 only
6448
+ // Make sure the `:has()` argument is parsed unforgivingly.
6462
6449
  // We include `*` in the test to detect buggy implementations that are
6463
6450
  // _selectively_ forgiving (specifically when the list includes at least
6464
6451
  // one valid selector).
@@ -6475,54 +6462,22 @@ setDocument = Sizzle.setDocument = function( node ) {
6475
6462
  }
6476
6463
  } );
6477
6464
 
6478
- /* Attributes
6479
- ---------------------------------------------------------------------- */
6480
-
6481
- // Support: IE<8
6482
- // Verify that getAttribute really returns attributes and not properties
6483
- // (excepting IE8 booleans)
6484
- support.attributes = assert( function( el ) {
6485
- el.className = "i";
6486
- return !el.getAttribute( "className" );
6487
- } );
6488
-
6489
- /* getElement(s)By*
6490
- ---------------------------------------------------------------------- */
6491
-
6492
- // Check if getElementsByTagName("*") returns only elements
6493
- support.getElementsByTagName = assert( function( el ) {
6494
- el.appendChild( document.createComment( "" ) );
6495
- return !el.getElementsByTagName( "*" ).length;
6496
- } );
6497
-
6498
- // Support: IE<9
6499
- support.getElementsByClassName = rnative.test( document.getElementsByClassName );
6500
-
6501
- // Support: IE<10
6502
- // Check if getElementById returns elements by name
6503
- // The broken getElementById methods don't pick up programmatically-set names,
6504
- // so use a roundabout getElementsByName test
6505
- support.getById = assert( function( el ) {
6506
- docElem.appendChild( el ).id = expando;
6507
- return !document.getElementsByName || !document.getElementsByName( expando ).length;
6508
- } );
6509
-
6510
6465
  // ID filter and find
6511
6466
  if ( support.getById ) {
6512
- Expr.filter[ "ID" ] = function( id ) {
6467
+ Expr.filter.ID = function( id ) {
6513
6468
  var attrId = id.replace( runescape, funescape );
6514
6469
  return function( elem ) {
6515
6470
  return elem.getAttribute( "id" ) === attrId;
6516
6471
  };
6517
6472
  };
6518
- Expr.find[ "ID" ] = function( id, context ) {
6473
+ Expr.find.ID = function( id, context ) {
6519
6474
  if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
6520
6475
  var elem = context.getElementById( id );
6521
6476
  return elem ? [ elem ] : [];
6522
6477
  }
6523
6478
  };
6524
6479
  } else {
6525
- Expr.filter[ "ID" ] = function( id ) {
6480
+ Expr.filter.ID = function( id ) {
6526
6481
  var attrId = id.replace( runescape, funescape );
6527
6482
  return function( elem ) {
6528
6483
  var node = typeof elem.getAttributeNode !== "undefined" &&
@@ -6533,7 +6488,7 @@ setDocument = Sizzle.setDocument = function( node ) {
6533
6488
 
6534
6489
  // Support: IE 6 - 7 only
6535
6490
  // getElementById is not reliable as a find shortcut
6536
- Expr.find[ "ID" ] = function( id, context ) {
6491
+ Expr.find.ID = function( id, context ) {
6537
6492
  if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
6538
6493
  var node, i, elems,
6539
6494
  elem = context.getElementById( id );
@@ -6563,40 +6518,18 @@ setDocument = Sizzle.setDocument = function( node ) {
6563
6518
  }
6564
6519
 
6565
6520
  // Tag
6566
- Expr.find[ "TAG" ] = support.getElementsByTagName ?
6567
- function( tag, context ) {
6568
- if ( typeof context.getElementsByTagName !== "undefined" ) {
6569
- return context.getElementsByTagName( tag );
6521
+ Expr.find.TAG = function( tag, context ) {
6522
+ if ( typeof context.getElementsByTagName !== "undefined" ) {
6523
+ return context.getElementsByTagName( tag );
6570
6524
 
6571
- // DocumentFragment nodes don't have gEBTN
6572
- } else if ( support.qsa ) {
6573
- return context.querySelectorAll( tag );
6574
- }
6575
- } :
6576
-
6577
- function( tag, context ) {
6578
- var elem,
6579
- tmp = [],
6580
- i = 0,
6581
-
6582
- // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
6583
- results = context.getElementsByTagName( tag );
6584
-
6585
- // Filter out possible comments
6586
- if ( tag === "*" ) {
6587
- while ( ( elem = results[ i++ ] ) ) {
6588
- if ( elem.nodeType === 1 ) {
6589
- tmp.push( elem );
6590
- }
6591
- }
6592
-
6593
- return tmp;
6594
- }
6595
- return results;
6596
- };
6525
+ // DocumentFragment nodes don't have gEBTN
6526
+ } else {
6527
+ return context.querySelectorAll( tag );
6528
+ }
6529
+ };
6597
6530
 
6598
6531
  // Class
6599
- Expr.find[ "CLASS" ] = support.getElementsByClassName && function( className, context ) {
6532
+ Expr.find.CLASS = function( className, context ) {
6600
6533
  if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) {
6601
6534
  return context.getElementsByClassName( className );
6602
6535
  }
@@ -6607,139 +6540,75 @@ setDocument = Sizzle.setDocument = function( node ) {
6607
6540
 
6608
6541
  // QSA and matchesSelector support
6609
6542
 
6610
- // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
6611
- rbuggyMatches = [];
6612
-
6613
- // qSa(:focus) reports false when true (Chrome 21)
6614
- // We allow this because of a bug in IE8/9 that throws an error
6615
- // whenever `document.activeElement` is accessed on an iframe
6616
- // So, we allow :focus to pass through QSA all the time to avoid the IE error
6617
- // See https://bugs.jquery.com/ticket/13378
6618
6543
  rbuggyQSA = [];
6619
6544
 
6620
- if ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {
6545
+ // Build QSA regex
6546
+ // Regex strategy adopted from Diego Perini
6547
+ assert( function( el ) {
6621
6548
 
6622
- // Build QSA regex
6623
- // Regex strategy adopted from Diego Perini
6624
- assert( function( el ) {
6549
+ var input;
6625
6550
 
6626
- var input;
6627
-
6628
- // Select is set to empty string on purpose
6629
- // This is to test IE's treatment of not explicitly
6630
- // setting a boolean content attribute,
6631
- // since its presence should be enough
6632
- // https://bugs.jquery.com/ticket/12359
6633
- docElem.appendChild( el ).innerHTML = "<a id='" + expando + "'></a>" +
6634
- "<select id='" + expando + "-\r\\' msallowcapture=''>" +
6635
- "<option selected=''></option></select>";
6636
-
6637
- // Support: IE8, Opera 11-12.16
6638
- // Nothing should be selected when empty strings follow ^= or $= or *=
6639
- // The test attribute must be unknown in Opera but "safe" for WinRT
6640
- // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
6641
- if ( el.querySelectorAll( "[msallowcapture^='']" ).length ) {
6642
- rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
6643
- }
6644
-
6645
- // Support: IE8
6646
- // Boolean attributes and "value" are not treated correctly
6647
- if ( !el.querySelectorAll( "[selected]" ).length ) {
6648
- rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
6649
- }
6650
-
6651
- // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
6652
- if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
6653
- rbuggyQSA.push( "~=" );
6654
- }
6655
-
6656
- // Support: IE 11+, Edge 15 - 18+
6657
- // IE 11/Edge don't find elements on a `[name='']` query in some cases.
6658
- // Adding a temporary attribute to the document before the selection works
6659
- // around the issue.
6660
- // Interestingly, IE 10 & older don't seem to have the issue.
6661
- input = document.createElement( "input" );
6662
- input.setAttribute( "name", "" );
6663
- el.appendChild( input );
6664
- if ( !el.querySelectorAll( "[name='']" ).length ) {
6665
- rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" +
6666
- whitespace + "*(?:''|\"\")" );
6667
- }
6668
-
6669
- // Webkit/Opera - :checked should return selected option elements
6670
- // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
6671
- // IE8 throws error here and will not see later tests
6672
- if ( !el.querySelectorAll( ":checked" ).length ) {
6673
- rbuggyQSA.push( ":checked" );
6674
- }
6675
-
6676
- // Support: Safari 8+, iOS 8+
6677
- // https://bugs.webkit.org/show_bug.cgi?id=136851
6678
- // In-page `selector#id sibling-combinator selector` fails
6679
- if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) {
6680
- rbuggyQSA.push( ".#.+[+~]" );
6681
- }
6682
-
6683
- // Support: Firefox <=3.6 - 5 only
6684
- // Old Firefox doesn't throw on a badly-escaped identifier.
6685
- el.querySelectorAll( "\\\f" );
6686
- rbuggyQSA.push( "[\\r\\n\\f]" );
6687
- } );
6551
+ documentElement.appendChild( el ).innerHTML =
6552
+ "<a id='" + expando + "' href='' disabled='disabled'></a>" +
6553
+ "<select id='" + expando + "-\r\\' disabled='disabled'>" +
6554
+ "<option selected=''></option></select>";
6688
6555
 
6689
- assert( function( el ) {
6690
- el.innerHTML = "<a href='' disabled='disabled'></a>" +
6691
- "<select disabled='disabled'><option/></select>";
6692
-
6693
- // Support: Windows 8 Native Apps
6694
- // The type and name attributes are restricted during .innerHTML assignment
6695
- var input = document.createElement( "input" );
6696
- input.setAttribute( "type", "hidden" );
6697
- el.appendChild( input ).setAttribute( "name", "D" );
6698
-
6699
- // Support: IE8
6700
- // Enforce case-sensitivity of name attribute
6701
- if ( el.querySelectorAll( "[name=d]" ).length ) {
6702
- rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
6703
- }
6704
-
6705
- // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
6706
- // IE8 throws error here and will not see later tests
6707
- if ( el.querySelectorAll( ":enabled" ).length !== 2 ) {
6708
- rbuggyQSA.push( ":enabled", ":disabled" );
6709
- }
6710
-
6711
- // Support: IE9-11+
6712
- // IE's :disabled selector does not pick up the children of disabled fieldsets
6713
- docElem.appendChild( el ).disabled = true;
6714
- if ( el.querySelectorAll( ":disabled" ).length !== 2 ) {
6715
- rbuggyQSA.push( ":enabled", ":disabled" );
6716
- }
6717
-
6718
- // Support: Opera 10 - 11 only
6719
- // Opera 10-11 does not throw on post-comma invalid pseudos
6720
- el.querySelectorAll( "*,:x" );
6721
- rbuggyQSA.push( ",.*:" );
6722
- } );
6723
- }
6556
+ // Support: iOS <=7 - 8 only
6557
+ // Boolean attributes and "value" are not treated correctly in some XML documents
6558
+ if ( !el.querySelectorAll( "[selected]" ).length ) {
6559
+ rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
6560
+ }
6724
6561
 
6725
- if ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches ||
6726
- docElem.webkitMatchesSelector ||
6727
- docElem.mozMatchesSelector ||
6728
- docElem.oMatchesSelector ||
6729
- docElem.msMatchesSelector ) ) ) ) {
6562
+ // Support: iOS <=7 - 8 only
6563
+ if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
6564
+ rbuggyQSA.push( "~=" );
6565
+ }
6730
6566
 
6731
- assert( function( el ) {
6567
+ // Support: iOS 8 only
6568
+ // https://bugs.webkit.org/show_bug.cgi?id=136851
6569
+ // In-page `selector#id sibling-combinator selector` fails
6570
+ if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) {
6571
+ rbuggyQSA.push( ".#.+[+~]" );
6572
+ }
6732
6573
 
6733
- // Check to see if it's possible to do matchesSelector
6734
- // on a disconnected node (IE 9)
6735
- support.disconnectedMatch = matches.call( el, "*" );
6574
+ // Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+
6575
+ // In some of the document kinds, these selectors wouldn't work natively.
6576
+ // This is probably OK but for backwards compatibility we want to maintain
6577
+ // handling them through jQuery traversal in jQuery 3.x.
6578
+ if ( !el.querySelectorAll( ":checked" ).length ) {
6579
+ rbuggyQSA.push( ":checked" );
6580
+ }
6736
6581
 
6737
- // This should fail with an exception
6738
- // Gecko does not error, returns false instead
6739
- matches.call( el, "[s!='']:x" );
6740
- rbuggyMatches.push( "!=", pseudos );
6741
- } );
6742
- }
6582
+ // Support: Windows 8 Native Apps
6583
+ // The type and name attributes are restricted during .innerHTML assignment
6584
+ input = document.createElement( "input" );
6585
+ input.setAttribute( "type", "hidden" );
6586
+ el.appendChild( input ).setAttribute( "name", "D" );
6587
+
6588
+ // Support: IE 9 - 11+
6589
+ // IE's :disabled selector does not pick up the children of disabled fieldsets
6590
+ // Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+
6591
+ // In some of the document kinds, these selectors wouldn't work natively.
6592
+ // This is probably OK but for backwards compatibility we want to maintain
6593
+ // handling them through jQuery traversal in jQuery 3.x.
6594
+ documentElement.appendChild( el ).disabled = true;
6595
+ if ( el.querySelectorAll( ":disabled" ).length !== 2 ) {
6596
+ rbuggyQSA.push( ":enabled", ":disabled" );
6597
+ }
6598
+
6599
+ // Support: IE 11+, Edge 15 - 18+
6600
+ // IE 11/Edge don't find elements on a `[name='']` query in some cases.
6601
+ // Adding a temporary attribute to the document before the selection works
6602
+ // around the issue.
6603
+ // Interestingly, IE 10 & older don't seem to have the issue.
6604
+ input = document.createElement( "input" );
6605
+ input.setAttribute( "name", "" );
6606
+ el.appendChild( input );
6607
+ if ( !el.querySelectorAll( "[name='']" ).length ) {
6608
+ rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" +
6609
+ whitespace + "*(?:''|\"\")" );
6610
+ }
6611
+ } );
6743
6612
 
6744
6613
  if ( !support.cssHas ) {
6745
6614
 
@@ -6753,49 +6622,12 @@ setDocument = Sizzle.setDocument = function( node ) {
6753
6622
  }
6754
6623
 
6755
6624
  rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) );
6756
- rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( "|" ) );
6757
-
6758
- /* Contains
6759
- ---------------------------------------------------------------------- */
6760
- hasCompare = rnative.test( docElem.compareDocumentPosition );
6761
-
6762
- // Element contains another
6763
- // Purposefully self-exclusive
6764
- // As in, an element does not contain itself
6765
- contains = hasCompare || rnative.test( docElem.contains ) ?
6766
- function( a, b ) {
6767
-
6768
- // Support: IE <9 only
6769
- // IE doesn't have `contains` on `document` so we need to check for
6770
- // `documentElement` presence.
6771
- // We need to fall back to `a` when `documentElement` is missing
6772
- // as `ownerDocument` of elements within `<template/>` may have
6773
- // a null one - a default behavior of all modern browsers.
6774
- var adown = a.nodeType === 9 && a.documentElement || a,
6775
- bup = b && b.parentNode;
6776
- return a === bup || !!( bup && bup.nodeType === 1 && (
6777
- adown.contains ?
6778
- adown.contains( bup ) :
6779
- a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
6780
- ) );
6781
- } :
6782
- function( a, b ) {
6783
- if ( b ) {
6784
- while ( ( b = b.parentNode ) ) {
6785
- if ( b === a ) {
6786
- return true;
6787
- }
6788
- }
6789
- }
6790
- return false;
6791
- };
6792
6625
 
6793
6626
  /* Sorting
6794
6627
  ---------------------------------------------------------------------- */
6795
6628
 
6796
6629
  // Document order sorting
6797
- sortOrder = hasCompare ?
6798
- function( a, b ) {
6630
+ sortOrder = function( a, b ) {
6799
6631
 
6800
6632
  // Flag for duplicate removal
6801
6633
  if ( a === b ) {
@@ -6829,8 +6661,8 @@ setDocument = Sizzle.setDocument = function( node ) {
6829
6661
  // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
6830
6662
  // two documents; shallow comparisons work.
6831
6663
  // eslint-disable-next-line eqeqeq
6832
- if ( a == document || a.ownerDocument == preferredDoc &&
6833
- contains( preferredDoc, a ) ) {
6664
+ if ( a === document || a.ownerDocument == preferredDoc &&
6665
+ find.contains( preferredDoc, a ) ) {
6834
6666
  return -1;
6835
6667
  }
6836
6668
 
@@ -6838,100 +6670,33 @@ setDocument = Sizzle.setDocument = function( node ) {
6838
6670
  // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
6839
6671
  // two documents; shallow comparisons work.
6840
6672
  // eslint-disable-next-line eqeqeq
6841
- if ( b == document || b.ownerDocument == preferredDoc &&
6842
- contains( preferredDoc, b ) ) {
6673
+ if ( b === document || b.ownerDocument == preferredDoc &&
6674
+ find.contains( preferredDoc, b ) ) {
6843
6675
  return 1;
6844
6676
  }
6845
6677
 
6846
6678
  // Maintain original order
6847
6679
  return sortInput ?
6848
- ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
6680
+ ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
6849
6681
  0;
6850
6682
  }
6851
6683
 
6852
6684
  return compare & 4 ? -1 : 1;
6853
- } :
6854
- function( a, b ) {
6855
-
6856
- // Exit early if the nodes are identical
6857
- if ( a === b ) {
6858
- hasDuplicate = true;
6859
- return 0;
6860
- }
6861
-
6862
- var cur,
6863
- i = 0,
6864
- aup = a.parentNode,
6865
- bup = b.parentNode,
6866
- ap = [ a ],
6867
- bp = [ b ];
6868
-
6869
- // Parentless nodes are either documents or disconnected
6870
- if ( !aup || !bup ) {
6871
-
6872
- // Support: IE 11+, Edge 17 - 18+
6873
- // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
6874
- // two documents; shallow comparisons work.
6875
- /* eslint-disable eqeqeq */
6876
- return a == document ? -1 :
6877
- b == document ? 1 :
6878
- /* eslint-enable eqeqeq */
6879
- aup ? -1 :
6880
- bup ? 1 :
6881
- sortInput ?
6882
- ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
6883
- 0;
6884
-
6885
- // If the nodes are siblings, we can do a quick check
6886
- } else if ( aup === bup ) {
6887
- return siblingCheck( a, b );
6888
- }
6889
-
6890
- // Otherwise we need full lists of their ancestors for comparison
6891
- cur = a;
6892
- while ( ( cur = cur.parentNode ) ) {
6893
- ap.unshift( cur );
6894
- }
6895
- cur = b;
6896
- while ( ( cur = cur.parentNode ) ) {
6897
- bp.unshift( cur );
6898
- }
6899
-
6900
- // Walk down the tree looking for a discrepancy
6901
- while ( ap[ i ] === bp[ i ] ) {
6902
- i++;
6903
- }
6904
-
6905
- return i ?
6906
-
6907
- // Do a sibling check if the nodes have a common ancestor
6908
- siblingCheck( ap[ i ], bp[ i ] ) :
6909
-
6910
- // Otherwise nodes in our document sort first
6911
- // Support: IE 11+, Edge 17 - 18+
6912
- // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
6913
- // two documents; shallow comparisons work.
6914
- /* eslint-disable eqeqeq */
6915
- ap[ i ] == preferredDoc ? -1 :
6916
- bp[ i ] == preferredDoc ? 1 :
6917
- /* eslint-enable eqeqeq */
6918
- 0;
6919
6685
  };
6920
6686
 
6921
6687
  return document;
6922
- };
6688
+ }
6923
6689
 
6924
- Sizzle.matches = function( expr, elements ) {
6925
- return Sizzle( expr, null, null, elements );
6690
+ find.matches = function( expr, elements ) {
6691
+ return find( expr, null, null, elements );
6926
6692
  };
6927
6693
 
6928
- Sizzle.matchesSelector = function( elem, expr ) {
6694
+ find.matchesSelector = function( elem, expr ) {
6929
6695
  setDocument( elem );
6930
6696
 
6931
- if ( support.matchesSelector && documentIsHTML &&
6697
+ if ( documentIsHTML &&
6932
6698
  !nonnativeSelectorCache[ expr + " " ] &&
6933
- ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
6934
- ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {
6699
+ ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {
6935
6700
 
6936
6701
  try {
6937
6702
  var ret = matches.call( elem, expr );
@@ -6939,9 +6704,9 @@ Sizzle.matchesSelector = function( elem, expr ) {
6939
6704
  // IE 9's matchesSelector returns false on disconnected nodes
6940
6705
  if ( ret || support.disconnectedMatch ||
6941
6706
 
6942
- // As well, disconnected nodes are said to be in a document
6943
- // fragment in IE 9
6944
- elem.document && elem.document.nodeType !== 11 ) {
6707
+ // As well, disconnected nodes are said to be in a document
6708
+ // fragment in IE 9
6709
+ elem.document && elem.document.nodeType !== 11 ) {
6945
6710
  return ret;
6946
6711
  }
6947
6712
  } catch ( e ) {
@@ -6949,10 +6714,10 @@ Sizzle.matchesSelector = function( elem, expr ) {
6949
6714
  }
6950
6715
  }
6951
6716
 
6952
- return Sizzle( expr, document, null, [ elem ] ).length > 0;
6717
+ return find( expr, document, null, [ elem ] ).length > 0;
6953
6718
  };
6954
6719
 
6955
- Sizzle.contains = function( context, elem ) {
6720
+ find.contains = function( context, elem ) {
6956
6721
 
6957
6722
  // Set document vars if needed
6958
6723
  // Support: IE 11+, Edge 17 - 18+
@@ -6962,10 +6727,11 @@ Sizzle.contains = function( context, elem ) {
6962
6727
  if ( ( context.ownerDocument || context ) != document ) {
6963
6728
  setDocument( context );
6964
6729
  }
6965
- return contains( context, elem );
6730
+ return jQuery.contains( context, elem );
6966
6731
  };
6967
6732
 
6968
- Sizzle.attr = function( elem, name ) {
6733
+
6734
+ find.attr = function( elem, name ) {
6969
6735
 
6970
6736
  // Set document vars if needed
6971
6737
  // Support: IE 11+, Edge 17 - 18+
@@ -6978,25 +6744,19 @@ Sizzle.attr = function( elem, name ) {
6978
6744
 
6979
6745
  var fn = Expr.attrHandle[ name.toLowerCase() ],
6980
6746
 
6981
- // Don't get fooled by Object.prototype properties (jQuery #13807)
6747
+ // Don't get fooled by Object.prototype properties (see trac-13807)
6982
6748
  val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
6983
6749
  fn( elem, name, !documentIsHTML ) :
6984
6750
  undefined;
6985
6751
 
6986
- return val !== undefined ?
6987
- val :
6988
- support.attributes || !documentIsHTML ?
6989
- elem.getAttribute( name ) :
6990
- ( val = elem.getAttributeNode( name ) ) && val.specified ?
6991
- val.value :
6992
- null;
6993
- };
6752
+ if ( val !== undefined ) {
6753
+ return val;
6754
+ }
6994
6755
 
6995
- Sizzle.escape = function( sel ) {
6996
- return ( sel + "" ).replace( rcssescape, fcssescape );
6756
+ return elem.getAttribute( name );
6997
6757
  };
6998
6758
 
6999
- Sizzle.error = function( msg ) {
6759
+ find.error = function( msg ) {
7000
6760
  throw new Error( "Syntax error, unrecognized expression: " + msg );
7001
6761
  };
7002
6762
 
@@ -7004,16 +6764,20 @@ Sizzle.error = function( msg ) {
7004
6764
  * Document sorting and removing duplicates
7005
6765
  * @param {ArrayLike} results
7006
6766
  */
7007
- Sizzle.uniqueSort = function( results ) {
6767
+ jQuery.uniqueSort = function( results ) {
7008
6768
  var elem,
7009
6769
  duplicates = [],
7010
6770
  j = 0,
7011
6771
  i = 0;
7012
6772
 
7013
6773
  // Unless we *know* we can detect duplicates, assume their presence
7014
- hasDuplicate = !support.detectDuplicates;
7015
- sortInput = !support.sortStable && results.slice( 0 );
7016
- results.sort( sortOrder );
6774
+ //
6775
+ // Support: Android <=4.0+
6776
+ // Testing for detecting duplicates is unpredictable so instead assume we can't
6777
+ // depend on duplicate detection in all browsers without a stable sort.
6778
+ hasDuplicate = !support.sortStable;
6779
+ sortInput = !support.sortStable && slice.call( results, 0 );
6780
+ sort.call( results, sortOrder );
7017
6781
 
7018
6782
  if ( hasDuplicate ) {
7019
6783
  while ( ( elem = results[ i++ ] ) ) {
@@ -7022,7 +6786,7 @@ Sizzle.uniqueSort = function( results ) {
7022
6786
  }
7023
6787
  }
7024
6788
  while ( j-- ) {
7025
- results.splice( duplicates[ j ], 1 );
6789
+ splice.call( results, duplicates[ j ], 1 );
7026
6790
  }
7027
6791
  }
7028
6792
 
@@ -7033,47 +6797,11 @@ Sizzle.uniqueSort = function( results ) {
7033
6797
  return results;
7034
6798
  };
7035
6799
 
7036
- /**
7037
- * Utility function for retrieving the text value of an array of DOM nodes
7038
- * @param {Array|Element} elem
7039
- */
7040
- getText = Sizzle.getText = function( elem ) {
7041
- var node,
7042
- ret = "",
7043
- i = 0,
7044
- nodeType = elem.nodeType;
7045
-
7046
- if ( !nodeType ) {
7047
-
7048
- // If no nodeType, this is expected to be an array
7049
- while ( ( node = elem[ i++ ] ) ) {
7050
-
7051
- // Do not traverse comment nodes
7052
- ret += getText( node );
7053
- }
7054
- } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
7055
-
7056
- // Use textContent for elements
7057
- // innerText usage removed for consistency of new lines (jQuery #11153)
7058
- if ( typeof elem.textContent === "string" ) {
7059
- return elem.textContent;
7060
- } else {
7061
-
7062
- // Traverse its children
7063
- for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
7064
- ret += getText( elem );
7065
- }
7066
- }
7067
- } else if ( nodeType === 3 || nodeType === 4 ) {
7068
- return elem.nodeValue;
7069
- }
7070
-
7071
- // Do not include comment or processing instruction nodes
7072
-
7073
- return ret;
6800
+ jQuery.fn.uniqueSort = function() {
6801
+ return this.pushStack( jQuery.uniqueSort( slice.apply( this ) ) );
7074
6802
  };
7075
6803
 
7076
- Expr = Sizzle.selectors = {
6804
+ Expr = jQuery.expr = {
7077
6805
 
7078
6806
  // Can be adjusted by the user
7079
6807
  cacheLength: 50,
@@ -7094,12 +6822,12 @@ Expr = Sizzle.selectors = {
7094
6822
  },
7095
6823
 
7096
6824
  preFilter: {
7097
- "ATTR": function( match ) {
6825
+ ATTR: function( match ) {
7098
6826
  match[ 1 ] = match[ 1 ].replace( runescape, funescape );
7099
6827
 
7100
6828
  // Move the given value to match[3] whether quoted or unquoted
7101
- match[ 3 ] = ( match[ 3 ] || match[ 4 ] ||
7102
- match[ 5 ] || "" ).replace( runescape, funescape );
6829
+ match[ 3 ] = ( match[ 3 ] || match[ 4 ] || match[ 5 ] || "" )
6830
+ .replace( runescape, funescape );
7103
6831
 
7104
6832
  if ( match[ 2 ] === "~=" ) {
7105
6833
  match[ 3 ] = " " + match[ 3 ] + " ";
@@ -7108,7 +6836,7 @@ Expr = Sizzle.selectors = {
7108
6836
  return match.slice( 0, 4 );
7109
6837
  },
7110
6838
 
7111
- "CHILD": function( match ) {
6839
+ CHILD: function( match ) {
7112
6840
 
7113
6841
  /* matches from matchExpr["CHILD"]
7114
6842
  1 type (only|nth|...)
@@ -7126,29 +6854,30 @@ Expr = Sizzle.selectors = {
7126
6854
 
7127
6855
  // nth-* requires argument
7128
6856
  if ( !match[ 3 ] ) {
7129
- Sizzle.error( match[ 0 ] );
6857
+ find.error( match[ 0 ] );
7130
6858
  }
7131
6859
 
7132
6860
  // numeric x and y parameters for Expr.filter.CHILD
7133
6861
  // remember that false/true cast respectively to 0/1
7134
6862
  match[ 4 ] = +( match[ 4 ] ?
7135
6863
  match[ 5 ] + ( match[ 6 ] || 1 ) :
7136
- 2 * ( match[ 3 ] === "even" || match[ 3 ] === "odd" ) );
6864
+ 2 * ( match[ 3 ] === "even" || match[ 3 ] === "odd" )
6865
+ );
7137
6866
  match[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === "odd" );
7138
6867
 
7139
- // other types prohibit arguments
6868
+ // other types prohibit arguments
7140
6869
  } else if ( match[ 3 ] ) {
7141
- Sizzle.error( match[ 0 ] );
6870
+ find.error( match[ 0 ] );
7142
6871
  }
7143
6872
 
7144
6873
  return match;
7145
6874
  },
7146
6875
 
7147
- "PSEUDO": function( match ) {
6876
+ PSEUDO: function( match ) {
7148
6877
  var excess,
7149
6878
  unquoted = !match[ 6 ] && match[ 2 ];
7150
6879
 
7151
- if ( matchExpr[ "CHILD" ].test( match[ 0 ] ) ) {
6880
+ if ( matchExpr.CHILD.test( match[ 0 ] ) ) {
7152
6881
  return null;
7153
6882
  }
7154
6883
 
@@ -7177,36 +6906,36 @@ Expr = Sizzle.selectors = {
7177
6906
 
7178
6907
  filter: {
7179
6908
 
7180
- "TAG": function( nodeNameSelector ) {
7181
- var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
6909
+ TAG: function( nodeNameSelector ) {
6910
+ var expectedNodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
7182
6911
  return nodeNameSelector === "*" ?
7183
6912
  function() {
7184
6913
  return true;
7185
6914
  } :
7186
6915
  function( elem ) {
7187
- return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
6916
+ return nodeName( elem, expectedNodeName );
7188
6917
  };
7189
6918
  },
7190
6919
 
7191
- "CLASS": function( className ) {
6920
+ CLASS: function( className ) {
7192
6921
  var pattern = classCache[ className + " " ];
7193
6922
 
7194
6923
  return pattern ||
7195
- ( pattern = new RegExp( "(^|" + whitespace +
7196
- ")" + className + "(" + whitespace + "|$)" ) ) && classCache(
7197
- className, function( elem ) {
7198
- return pattern.test(
7199
- typeof elem.className === "string" && elem.className ||
7200
- typeof elem.getAttribute !== "undefined" &&
7201
- elem.getAttribute( "class" ) ||
7202
- ""
7203
- );
6924
+ ( pattern = new RegExp( "(^|" + whitespace + ")" + className +
6925
+ "(" + whitespace + "|$)" ) ) &&
6926
+ classCache( className, function( elem ) {
6927
+ return pattern.test(
6928
+ typeof elem.className === "string" && elem.className ||
6929
+ typeof elem.getAttribute !== "undefined" &&
6930
+ elem.getAttribute( "class" ) ||
6931
+ ""
6932
+ );
7204
6933
  } );
7205
6934
  },
7206
6935
 
7207
- "ATTR": function( name, operator, check ) {
6936
+ ATTR: function( name, operator, check ) {
7208
6937
  return function( elem ) {
7209
- var result = Sizzle.attr( elem, name );
6938
+ var result = find.attr( elem, name );
7210
6939
 
7211
6940
  if ( result == null ) {
7212
6941
  return operator === "!=";
@@ -7217,22 +6946,34 @@ Expr = Sizzle.selectors = {
7217
6946
 
7218
6947
  result += "";
7219
6948
 
7220
- /* eslint-disable max-len */
7221
-
7222
- return operator === "=" ? result === check :
7223
- operator === "!=" ? result !== check :
7224
- operator === "^=" ? check && result.indexOf( check ) === 0 :
7225
- operator === "*=" ? check && result.indexOf( check ) > -1 :
7226
- operator === "$=" ? check && result.slice( -check.length ) === check :
7227
- operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
7228
- operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
7229
- false;
7230
- /* eslint-enable max-len */
6949
+ if ( operator === "=" ) {
6950
+ return result === check;
6951
+ }
6952
+ if ( operator === "!=" ) {
6953
+ return result !== check;
6954
+ }
6955
+ if ( operator === "^=" ) {
6956
+ return check && result.indexOf( check ) === 0;
6957
+ }
6958
+ if ( operator === "*=" ) {
6959
+ return check && result.indexOf( check ) > -1;
6960
+ }
6961
+ if ( operator === "$=" ) {
6962
+ return check && result.slice( -check.length ) === check;
6963
+ }
6964
+ if ( operator === "~=" ) {
6965
+ return ( " " + result.replace( rwhitespace, " " ) + " " )
6966
+ .indexOf( check ) > -1;
6967
+ }
6968
+ if ( operator === "|=" ) {
6969
+ return result === check || result.slice( 0, check.length + 1 ) === check + "-";
6970
+ }
7231
6971
 
6972
+ return false;
7232
6973
  };
7233
6974
  },
7234
6975
 
7235
- "CHILD": function( type, what, _argument, first, last ) {
6976
+ CHILD: function( type, what, _argument, first, last ) {
7236
6977
  var simple = type.slice( 0, 3 ) !== "nth",
7237
6978
  forward = type.slice( -4 ) !== "last",
7238
6979
  ofType = what === "of-type";
@@ -7245,7 +6986,7 @@ Expr = Sizzle.selectors = {
7245
6986
  } :
7246
6987
 
7247
6988
  function( elem, _context, xml ) {
7248
- var cache, uniqueCache, outerCache, node, nodeIndex, start,
6989
+ var cache, outerCache, node, nodeIndex, start,
7249
6990
  dir = simple !== forward ? "nextSibling" : "previousSibling",
7250
6991
  parent = elem.parentNode,
7251
6992
  name = ofType && elem.nodeName.toLowerCase(),
@@ -7260,7 +7001,7 @@ Expr = Sizzle.selectors = {
7260
7001
  node = elem;
7261
7002
  while ( ( node = node[ dir ] ) ) {
7262
7003
  if ( ofType ?
7263
- node.nodeName.toLowerCase() === name :
7004
+ nodeName( node, name ) :
7264
7005
  node.nodeType === 1 ) {
7265
7006
 
7266
7007
  return false;
@@ -7279,17 +7020,8 @@ Expr = Sizzle.selectors = {
7279
7020
  if ( forward && useCache ) {
7280
7021
 
7281
7022
  // Seek `elem` from a previously-cached index
7282
-
7283
- // ...in a gzip-friendly way
7284
- node = parent;
7285
- outerCache = node[ expando ] || ( node[ expando ] = {} );
7286
-
7287
- // Support: IE <9 only
7288
- // Defend against cloned attroperties (jQuery gh-1709)
7289
- uniqueCache = outerCache[ node.uniqueID ] ||
7290
- ( outerCache[ node.uniqueID ] = {} );
7291
-
7292
- cache = uniqueCache[ type ] || [];
7023
+ outerCache = parent[ expando ] || ( parent[ expando ] = {} );
7024
+ cache = outerCache[ type ] || [];
7293
7025
  nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
7294
7026
  diff = nodeIndex && cache[ 2 ];
7295
7027
  node = nodeIndex && parent.childNodes[ nodeIndex ];
@@ -7301,7 +7033,7 @@ Expr = Sizzle.selectors = {
7301
7033
 
7302
7034
  // When found, cache indexes on `parent` and break
7303
7035
  if ( node.nodeType === 1 && ++diff && node === elem ) {
7304
- uniqueCache[ type ] = [ dirruns, nodeIndex, diff ];
7036
+ outerCache[ type ] = [ dirruns, nodeIndex, diff ];
7305
7037
  break;
7306
7038
  }
7307
7039
  }
@@ -7310,17 +7042,8 @@ Expr = Sizzle.selectors = {
7310
7042
 
7311
7043
  // Use previously-cached element index if available
7312
7044
  if ( useCache ) {
7313
-
7314
- // ...in a gzip-friendly way
7315
- node = elem;
7316
- outerCache = node[ expando ] || ( node[ expando ] = {} );
7317
-
7318
- // Support: IE <9 only
7319
- // Defend against cloned attroperties (jQuery gh-1709)
7320
- uniqueCache = outerCache[ node.uniqueID ] ||
7321
- ( outerCache[ node.uniqueID ] = {} );
7322
-
7323
- cache = uniqueCache[ type ] || [];
7045
+ outerCache = elem[ expando ] || ( elem[ expando ] = {} );
7046
+ cache = outerCache[ type ] || [];
7324
7047
  nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
7325
7048
  diff = nodeIndex;
7326
7049
  }
@@ -7334,7 +7057,7 @@ Expr = Sizzle.selectors = {
7334
7057
  ( diff = nodeIndex = 0 ) || start.pop() ) ) {
7335
7058
 
7336
7059
  if ( ( ofType ?
7337
- node.nodeName.toLowerCase() === name :
7060
+ nodeName( node, name ) :
7338
7061
  node.nodeType === 1 ) &&
7339
7062
  ++diff ) {
7340
7063
 
@@ -7342,13 +7065,7 @@ Expr = Sizzle.selectors = {
7342
7065
  if ( useCache ) {
7343
7066
  outerCache = node[ expando ] ||
7344
7067
  ( node[ expando ] = {} );
7345
-
7346
- // Support: IE <9 only
7347
- // Defend against cloned attroperties (jQuery gh-1709)
7348
- uniqueCache = outerCache[ node.uniqueID ] ||
7349
- ( outerCache[ node.uniqueID ] = {} );
7350
-
7351
- uniqueCache[ type ] = [ dirruns, diff ];
7068
+ outerCache[ type ] = [ dirruns, diff ];
7352
7069
  }
7353
7070
 
7354
7071
  if ( node === elem ) {
@@ -7366,19 +7083,19 @@ Expr = Sizzle.selectors = {
7366
7083
  };
7367
7084
  },
7368
7085
 
7369
- "PSEUDO": function( pseudo, argument ) {
7086
+ PSEUDO: function( pseudo, argument ) {
7370
7087
 
7371
7088
  // pseudo-class names are case-insensitive
7372
- // http://www.w3.org/TR/selectors/#pseudo-classes
7089
+ // https://www.w3.org/TR/selectors/#pseudo-classes
7373
7090
  // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
7374
7091
  // Remember that setFilters inherits from pseudos
7375
7092
  var args,
7376
7093
  fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
7377
- Sizzle.error( "unsupported pseudo: " + pseudo );
7094
+ find.error( "unsupported pseudo: " + pseudo );
7378
7095
 
7379
7096
  // The user may use createPseudo to indicate that
7380
7097
  // arguments are needed to create the filter function
7381
- // just as Sizzle does
7098
+ // just as jQuery does
7382
7099
  if ( fn[ expando ] ) {
7383
7100
  return fn( argument );
7384
7101
  }
@@ -7392,7 +7109,7 @@ Expr = Sizzle.selectors = {
7392
7109
  matched = fn( seed, argument ),
7393
7110
  i = matched.length;
7394
7111
  while ( i-- ) {
7395
- idx = indexOf( seed, matched[ i ] );
7112
+ idx = indexOf.call( seed, matched[ i ] );
7396
7113
  seed[ idx ] = !( matches[ idx ] = matched[ i ] );
7397
7114
  }
7398
7115
  } ) :
@@ -7408,14 +7125,14 @@ Expr = Sizzle.selectors = {
7408
7125
  pseudos: {
7409
7126
 
7410
7127
  // Potentially complex pseudos
7411
- "not": markFunction( function( selector ) {
7128
+ not: markFunction( function( selector ) {
7412
7129
 
7413
7130
  // Trim the selector passed to compile
7414
7131
  // to avoid treating leading and trailing
7415
7132
  // spaces as combinators
7416
7133
  var input = [],
7417
7134
  results = [],
7418
- matcher = compile( selector.replace( rtrim, "$1" ) );
7135
+ matcher = compile( selector.replace( rtrimCSS, "$1" ) );
7419
7136
 
7420
7137
  return matcher[ expando ] ?
7421
7138
  markFunction( function( seed, matches, _context, xml ) {
@@ -7434,22 +7151,23 @@ Expr = Sizzle.selectors = {
7434
7151
  input[ 0 ] = elem;
7435
7152
  matcher( input, null, xml, results );
7436
7153
 
7437
- // Don't keep the element (issue #299)
7154
+ // Don't keep the element
7155
+ // (see https://github.com/jquery/sizzle/issues/299)
7438
7156
  input[ 0 ] = null;
7439
7157
  return !results.pop();
7440
7158
  };
7441
7159
  } ),
7442
7160
 
7443
- "has": markFunction( function( selector ) {
7161
+ has: markFunction( function( selector ) {
7444
7162
  return function( elem ) {
7445
- return Sizzle( selector, elem ).length > 0;
7163
+ return find( selector, elem ).length > 0;
7446
7164
  };
7447
7165
  } ),
7448
7166
 
7449
- "contains": markFunction( function( text ) {
7167
+ contains: markFunction( function( text ) {
7450
7168
  text = text.replace( runescape, funescape );
7451
7169
  return function( elem ) {
7452
- return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;
7170
+ return ( elem.textContent || jQuery.text( elem ) ).indexOf( text ) > -1;
7453
7171
  };
7454
7172
  } ),
7455
7173
 
@@ -7459,12 +7177,12 @@ Expr = Sizzle.selectors = {
7459
7177
  // or beginning with the identifier C immediately followed by "-".
7460
7178
  // The matching of C against the element's language value is performed case-insensitively.
7461
7179
  // The identifier C does not have to be a valid language name."
7462
- // http://www.w3.org/TR/selectors/#lang-pseudo
7463
- "lang": markFunction( function( lang ) {
7180
+ // https://www.w3.org/TR/selectors/#lang-pseudo
7181
+ lang: markFunction( function( lang ) {
7464
7182
 
7465
7183
  // lang value must be a valid identifier
7466
7184
  if ( !ridentifier.test( lang || "" ) ) {
7467
- Sizzle.error( "unsupported lang: " + lang );
7185
+ find.error( "unsupported lang: " + lang );
7468
7186
  }
7469
7187
  lang = lang.replace( runescape, funescape ).toLowerCase();
7470
7188
  return function( elem ) {
@@ -7483,43 +7201,42 @@ Expr = Sizzle.selectors = {
7483
7201
  } ),
7484
7202
 
7485
7203
  // Miscellaneous
7486
- "target": function( elem ) {
7204
+ target: function( elem ) {
7487
7205
  var hash = window.location && window.location.hash;
7488
7206
  return hash && hash.slice( 1 ) === elem.id;
7489
7207
  },
7490
7208
 
7491
- "root": function( elem ) {
7492
- return elem === docElem;
7209
+ root: function( elem ) {
7210
+ return elem === documentElement;
7493
7211
  },
7494
7212
 
7495
- "focus": function( elem ) {
7496
- return elem === document.activeElement &&
7497
- ( !document.hasFocus || document.hasFocus() ) &&
7213
+ focus: function( elem ) {
7214
+ return elem === safeActiveElement() &&
7215
+ document.hasFocus() &&
7498
7216
  !!( elem.type || elem.href || ~elem.tabIndex );
7499
7217
  },
7500
7218
 
7501
7219
  // Boolean properties
7502
- "enabled": createDisabledPseudo( false ),
7503
- "disabled": createDisabledPseudo( true ),
7220
+ enabled: createDisabledPseudo( false ),
7221
+ disabled: createDisabledPseudo( true ),
7504
7222
 
7505
- "checked": function( elem ) {
7223
+ checked: function( elem ) {
7506
7224
 
7507
7225
  // In CSS3, :checked should return both checked and selected elements
7508
- // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
7509
- var nodeName = elem.nodeName.toLowerCase();
7510
- return ( nodeName === "input" && !!elem.checked ) ||
7511
- ( nodeName === "option" && !!elem.selected );
7226
+ // https://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
7227
+ return ( nodeName( elem, "input" ) && !!elem.checked ) ||
7228
+ ( nodeName( elem, "option" ) && !!elem.selected );
7512
7229
  },
7513
7230
 
7514
- "selected": function( elem ) {
7231
+ selected: function( elem ) {
7515
7232
 
7516
7233
  return elem.selected === true;
7517
7234
  },
7518
7235
 
7519
7236
  // Contents
7520
- "empty": function( elem ) {
7237
+ empty: function( elem ) {
7521
7238
 
7522
- // http://www.w3.org/TR/selectors/#empty-pseudo
7239
+ // https://www.w3.org/TR/selectors/#empty-pseudo
7523
7240
  // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
7524
7241
  // but not by others (comment: 8; processing instruction: 7; etc.)
7525
7242
  // nodeType < 6 works because attributes (2) do not appear as children
@@ -7531,49 +7248,49 @@ Expr = Sizzle.selectors = {
7531
7248
  return true;
7532
7249
  },
7533
7250
 
7534
- "parent": function( elem ) {
7535
- return !Expr.pseudos[ "empty" ]( elem );
7251
+ parent: function( elem ) {
7252
+ return !Expr.pseudos.empty( elem );
7536
7253
  },
7537
7254
 
7538
7255
  // Element/input types
7539
- "header": function( elem ) {
7256
+ header: function( elem ) {
7540
7257
  return rheader.test( elem.nodeName );
7541
7258
  },
7542
7259
 
7543
- "input": function( elem ) {
7260
+ input: function( elem ) {
7544
7261
  return rinputs.test( elem.nodeName );
7545
7262
  },
7546
7263
 
7547
- "button": function( elem ) {
7548
- var name = elem.nodeName.toLowerCase();
7549
- return name === "input" && elem.type === "button" || name === "button";
7264
+ button: function( elem ) {
7265
+ return nodeName( elem, "input" ) && elem.type === "button" ||
7266
+ nodeName( elem, "button" );
7550
7267
  },
7551
7268
 
7552
- "text": function( elem ) {
7269
+ text: function( elem ) {
7553
7270
  var attr;
7554
- return elem.nodeName.toLowerCase() === "input" &&
7555
- elem.type === "text" &&
7271
+ return nodeName( elem, "input" ) && elem.type === "text" &&
7556
7272
 
7557
7273
  // Support: IE <10 only
7558
- // New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
7274
+ // New HTML5 attribute values (e.g., "search") appear
7275
+ // with elem.type === "text"
7559
7276
  ( ( attr = elem.getAttribute( "type" ) ) == null ||
7560
7277
  attr.toLowerCase() === "text" );
7561
7278
  },
7562
7279
 
7563
7280
  // Position-in-collection
7564
- "first": createPositionalPseudo( function() {
7281
+ first: createPositionalPseudo( function() {
7565
7282
  return [ 0 ];
7566
7283
  } ),
7567
7284
 
7568
- "last": createPositionalPseudo( function( _matchIndexes, length ) {
7285
+ last: createPositionalPseudo( function( _matchIndexes, length ) {
7569
7286
  return [ length - 1 ];
7570
7287
  } ),
7571
7288
 
7572
- "eq": createPositionalPseudo( function( _matchIndexes, length, argument ) {
7289
+ eq: createPositionalPseudo( function( _matchIndexes, length, argument ) {
7573
7290
  return [ argument < 0 ? argument + length : argument ];
7574
7291
  } ),
7575
7292
 
7576
- "even": createPositionalPseudo( function( matchIndexes, length ) {
7293
+ even: createPositionalPseudo( function( matchIndexes, length ) {
7577
7294
  var i = 0;
7578
7295
  for ( ; i < length; i += 2 ) {
7579
7296
  matchIndexes.push( i );
@@ -7581,7 +7298,7 @@ Expr = Sizzle.selectors = {
7581
7298
  return matchIndexes;
7582
7299
  } ),
7583
7300
 
7584
- "odd": createPositionalPseudo( function( matchIndexes, length ) {
7301
+ odd: createPositionalPseudo( function( matchIndexes, length ) {
7585
7302
  var i = 1;
7586
7303
  for ( ; i < length; i += 2 ) {
7587
7304
  matchIndexes.push( i );
@@ -7589,19 +7306,24 @@ Expr = Sizzle.selectors = {
7589
7306
  return matchIndexes;
7590
7307
  } ),
7591
7308
 
7592
- "lt": createPositionalPseudo( function( matchIndexes, length, argument ) {
7593
- var i = argument < 0 ?
7594
- argument + length :
7595
- argument > length ?
7596
- length :
7597
- argument;
7309
+ lt: createPositionalPseudo( function( matchIndexes, length, argument ) {
7310
+ var i;
7311
+
7312
+ if ( argument < 0 ) {
7313
+ i = argument + length;
7314
+ } else if ( argument > length ) {
7315
+ i = length;
7316
+ } else {
7317
+ i = argument;
7318
+ }
7319
+
7598
7320
  for ( ; --i >= 0; ) {
7599
7321
  matchIndexes.push( i );
7600
7322
  }
7601
7323
  return matchIndexes;
7602
7324
  } ),
7603
7325
 
7604
- "gt": createPositionalPseudo( function( matchIndexes, length, argument ) {
7326
+ gt: createPositionalPseudo( function( matchIndexes, length, argument ) {
7605
7327
  var i = argument < 0 ? argument + length : argument;
7606
7328
  for ( ; ++i < length; ) {
7607
7329
  matchIndexes.push( i );
@@ -7611,7 +7333,7 @@ Expr = Sizzle.selectors = {
7611
7333
  }
7612
7334
  };
7613
7335
 
7614
- Expr.pseudos[ "nth" ] = Expr.pseudos[ "eq" ];
7336
+ Expr.pseudos.nth = Expr.pseudos.eq;
7615
7337
 
7616
7338
  // Add button/input type pseudos
7617
7339
  for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
@@ -7626,7 +7348,7 @@ function setFilters() {}
7626
7348
  setFilters.prototype = Expr.filters = Expr.pseudos;
7627
7349
  Expr.setFilters = new setFilters();
7628
7350
 
7629
- tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
7351
+ function tokenize( selector, parseOnly ) {
7630
7352
  var matched, match, tokens, type,
7631
7353
  soFar, groups, preFilters,
7632
7354
  cached = tokenCache[ selector + " " ];
@@ -7660,7 +7382,7 @@ tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
7660
7382
  value: matched,
7661
7383
 
7662
7384
  // Cast descendant combinators to space
7663
- type: match[ 0 ].replace( rtrim, " " )
7385
+ type: match[ 0 ].replace( rtrimCSS, " " )
7664
7386
  } );
7665
7387
  soFar = soFar.slice( matched.length );
7666
7388
  }
@@ -7687,14 +7409,16 @@ tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
7687
7409
  // Return the length of the invalid excess
7688
7410
  // if we're just parsing
7689
7411
  // Otherwise, throw an error or return tokens
7690
- return parseOnly ?
7691
- soFar.length :
7692
- soFar ?
7693
- Sizzle.error( selector ) :
7412
+ if ( parseOnly ) {
7413
+ return soFar.length;
7414
+ }
7694
7415
 
7695
- // Cache the tokens
7696
- tokenCache( selector, groups ).slice( 0 );
7697
- };
7416
+ return soFar ?
7417
+ find.error( selector ) :
7418
+
7419
+ // Cache the tokens
7420
+ tokenCache( selector, groups ).slice( 0 );
7421
+ }
7698
7422
 
7699
7423
  function toSelector( tokens ) {
7700
7424
  var i = 0,
@@ -7727,7 +7451,7 @@ function addCombinator( matcher, combinator, base ) {
7727
7451
 
7728
7452
  // Check against all ancestor/preceding elements
7729
7453
  function( elem, context, xml ) {
7730
- var oldCache, uniqueCache, outerCache,
7454
+ var oldCache, outerCache,
7731
7455
  newCache = [ dirruns, doneName ];
7732
7456
 
7733
7457
  // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
@@ -7744,14 +7468,9 @@ function addCombinator( matcher, combinator, base ) {
7744
7468
  if ( elem.nodeType === 1 || checkNonElements ) {
7745
7469
  outerCache = elem[ expando ] || ( elem[ expando ] = {} );
7746
7470
 
7747
- // Support: IE <9 only
7748
- // Defend against cloned attroperties (jQuery gh-1709)
7749
- uniqueCache = outerCache[ elem.uniqueID ] ||
7750
- ( outerCache[ elem.uniqueID ] = {} );
7751
-
7752
- if ( skip && skip === elem.nodeName.toLowerCase() ) {
7471
+ if ( skip && nodeName( elem, skip ) ) {
7753
7472
  elem = elem[ dir ] || elem;
7754
- } else if ( ( oldCache = uniqueCache[ key ] ) &&
7473
+ } else if ( ( oldCache = outerCache[ key ] ) &&
7755
7474
  oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
7756
7475
 
7757
7476
  // Assign to newCache so results back-propagate to previous elements
@@ -7759,7 +7478,7 @@ function addCombinator( matcher, combinator, base ) {
7759
7478
  } else {
7760
7479
 
7761
7480
  // Reuse newcache so results back-propagate to previous elements
7762
- uniqueCache[ key ] = newCache;
7481
+ outerCache[ key ] = newCache;
7763
7482
 
7764
7483
  // A match means we're done; a fail means we have to keep checking
7765
7484
  if ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {
@@ -7791,7 +7510,7 @@ function multipleContexts( selector, contexts, results ) {
7791
7510
  var i = 0,
7792
7511
  len = contexts.length;
7793
7512
  for ( ; i < len; i++ ) {
7794
- Sizzle( selector, contexts[ i ], results );
7513
+ find( selector, contexts[ i ], results );
7795
7514
  }
7796
7515
  return results;
7797
7516
  }
@@ -7825,38 +7544,37 @@ function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postS
7825
7544
  postFinder = setMatcher( postFinder, postSelector );
7826
7545
  }
7827
7546
  return markFunction( function( seed, results, context, xml ) {
7828
- var temp, i, elem,
7547
+ var temp, i, elem, matcherOut,
7829
7548
  preMap = [],
7830
7549
  postMap = [],
7831
7550
  preexisting = results.length,
7832
7551
 
7833
7552
  // Get initial elements from seed or context
7834
- elems = seed || multipleContexts(
7835
- selector || "*",
7836
- context.nodeType ? [ context ] : context,
7837
- []
7838
- ),
7553
+ elems = seed ||
7554
+ multipleContexts( selector || "*",
7555
+ context.nodeType ? [ context ] : context, [] ),
7839
7556
 
7840
7557
  // Prefilter to get matcher input, preserving a map for seed-results synchronization
7841
7558
  matcherIn = preFilter && ( seed || !selector ) ?
7842
7559
  condense( elems, preMap, preFilter, context, xml ) :
7843
- elems,
7560
+ elems;
7844
7561
 
7845
- matcherOut = matcher ?
7562
+ if ( matcher ) {
7846
7563
 
7847
- // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
7848
- postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
7564
+ // If we have a postFinder, or filtered seed, or non-seed postFilter
7565
+ // or preexisting results,
7566
+ matcherOut = postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
7849
7567
 
7850
- // ...intermediate processing is necessary
7851
- [] :
7568
+ // ...intermediate processing is necessary
7569
+ [] :
7852
7570
 
7853
- // ...otherwise use results directly
7854
- results :
7855
- matcherIn;
7571
+ // ...otherwise use results directly
7572
+ results;
7856
7573
 
7857
- // Find primary matches
7858
- if ( matcher ) {
7574
+ // Find primary matches
7859
7575
  matcher( matcherIn, matcherOut, context, xml );
7576
+ } else {
7577
+ matcherOut = matcherIn;
7860
7578
  }
7861
7579
 
7862
7580
  // Apply postFilter
@@ -7894,7 +7612,7 @@ function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postS
7894
7612
  i = matcherOut.length;
7895
7613
  while ( i-- ) {
7896
7614
  if ( ( elem = matcherOut[ i ] ) &&
7897
- ( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) {
7615
+ ( temp = postFinder ? indexOf.call( seed, elem ) : preMap[ i ] ) > -1 ) {
7898
7616
 
7899
7617
  seed[ temp ] = !( results[ temp ] = elem );
7900
7618
  }
@@ -7929,15 +7647,21 @@ function matcherFromTokens( tokens ) {
7929
7647
  return elem === checkContext;
7930
7648
  }, implicitRelative, true ),
7931
7649
  matchAnyContext = addCombinator( function( elem ) {
7932
- return indexOf( checkContext, elem ) > -1;
7650
+ return indexOf.call( checkContext, elem ) > -1;
7933
7651
  }, implicitRelative, true ),
7934
7652
  matchers = [ function( elem, context, xml ) {
7935
- var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
7653
+
7654
+ // Support: IE 11+, Edge 17 - 18+
7655
+ // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
7656
+ // two documents; shallow comparisons work.
7657
+ // eslint-disable-next-line eqeqeq
7658
+ var ret = ( !leadingRelative && ( xml || context != outermostContext ) ) || (
7936
7659
  ( checkContext = context ).nodeType ?
7937
7660
  matchContext( elem, context, xml ) :
7938
7661
  matchAnyContext( elem, context, xml ) );
7939
7662
 
7940
- // Avoid hanging onto element (issue #299)
7663
+ // Avoid hanging onto element
7664
+ // (see https://github.com/jquery/sizzle/issues/299)
7941
7665
  checkContext = null;
7942
7666
  return ret;
7943
7667
  } ];
@@ -7962,11 +7686,10 @@ function matcherFromTokens( tokens ) {
7962
7686
  i > 1 && elementMatcher( matchers ),
7963
7687
  i > 1 && toSelector(
7964
7688
 
7965
- // If the preceding token was a descendant combinator, insert an implicit any-element `*`
7966
- tokens
7967
- .slice( 0, i - 1 )
7968
- .concat( { value: tokens[ i - 2 ].type === " " ? "*" : "" } )
7969
- ).replace( rtrim, "$1" ),
7689
+ // If the preceding token was a descendant combinator, insert an implicit any-element `*`
7690
+ tokens.slice( 0, i - 1 )
7691
+ .concat( { value: tokens[ i - 2 ].type === " " ? "*" : "" } )
7692
+ ).replace( rtrimCSS, "$1" ),
7970
7693
  matcher,
7971
7694
  i < j && matcherFromTokens( tokens.slice( i, j ) ),
7972
7695
  j < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),
@@ -7992,7 +7715,7 @@ function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
7992
7715
  contextBackup = outermostContext,
7993
7716
 
7994
7717
  // We must always have either seed elements or outermost context
7995
- elems = seed || byElement && Expr.find[ "TAG" ]( "*", outermost ),
7718
+ elems = seed || byElement && Expr.find.TAG( "*", outermost ),
7996
7719
 
7997
7720
  // Use integer dirruns iff this is the outermost matcher
7998
7721
  dirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),
@@ -8008,8 +7731,9 @@ function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
8008
7731
  }
8009
7732
 
8010
7733
  // Add elements passing elementMatchers directly to results
8011
- // Support: IE<9, Safari
8012
- // Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
7734
+ // Support: iOS <=7 - 9 only
7735
+ // Tolerate NodeList properties (IE: "length"; Safari: <number>) matching
7736
+ // elements by id. (see trac-14142)
8013
7737
  for ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {
8014
7738
  if ( byElement && elem ) {
8015
7739
  j = 0;
@@ -8024,7 +7748,7 @@ function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
8024
7748
  }
8025
7749
  while ( ( matcher = elementMatchers[ j++ ] ) ) {
8026
7750
  if ( matcher( elem, context || document, xml ) ) {
8027
- results.push( elem );
7751
+ push.call( results, elem );
8028
7752
  break;
8029
7753
  }
8030
7754
  }
@@ -8087,7 +7811,7 @@ function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
8087
7811
  if ( outermost && !seed && setMatched.length > 0 &&
8088
7812
  ( matchedCount + setMatchers.length ) > 1 ) {
8089
7813
 
8090
- Sizzle.uniqueSort( results );
7814
+ jQuery.uniqueSort( results );
8091
7815
  }
8092
7816
  }
8093
7817
 
@@ -8105,7 +7829,7 @@ function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
8105
7829
  superMatcher;
8106
7830
  }
8107
7831
 
8108
- compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
7832
+ function compile( selector, match /* Internal Use Only */ ) {
8109
7833
  var i,
8110
7834
  setMatchers = [],
8111
7835
  elementMatchers = [],
@@ -8128,27 +7852,25 @@ compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
8128
7852
  }
8129
7853
 
8130
7854
  // Cache the compiled function
8131
- cached = compilerCache(
8132
- selector,
8133
- matcherFromGroupMatchers( elementMatchers, setMatchers )
8134
- );
7855
+ cached = compilerCache( selector,
7856
+ matcherFromGroupMatchers( elementMatchers, setMatchers ) );
8135
7857
 
8136
7858
  // Save selector and tokenization
8137
7859
  cached.selector = selector;
8138
7860
  }
8139
7861
  return cached;
8140
- };
7862
+ }
8141
7863
 
8142
7864
  /**
8143
- * A low-level selection function that works with Sizzle's compiled
7865
+ * A low-level selection function that works with jQuery's compiled
8144
7866
  * selector functions
8145
7867
  * @param {String|Function} selector A selector or a pre-compiled
8146
- * selector function built with Sizzle.compile
7868
+ * selector function built with jQuery selector compile
8147
7869
  * @param {Element} context
8148
7870
  * @param {Array} [results]
8149
7871
  * @param {Array} [seed] A set of elements to match against
8150
7872
  */
8151
- select = Sizzle.select = function( selector, context, results, seed ) {
7873
+ function select( selector, context, results, seed ) {
8152
7874
  var i, tokens, token, type, find,
8153
7875
  compiled = typeof selector === "function" && selector,
8154
7876
  match = !seed && tokenize( ( selector = compiled.selector || selector ) );
@@ -8162,10 +7884,12 @@ select = Sizzle.select = function( selector, context, results, seed ) {
8162
7884
  // Reduce context if the leading compound selector is an ID
8163
7885
  tokens = match[ 0 ] = match[ 0 ].slice( 0 );
8164
7886
  if ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === "ID" &&
8165
- context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {
7887
+ context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {
8166
7888
 
8167
- context = ( Expr.find[ "ID" ]( token.matches[ 0 ]
8168
- .replace( runescape, funescape ), context ) || [] )[ 0 ];
7889
+ context = ( Expr.find.ID(
7890
+ token.matches[ 0 ].replace( runescape, funescape ),
7891
+ context
7892
+ ) || [] )[ 0 ];
8169
7893
  if ( !context ) {
8170
7894
  return results;
8171
7895
 
@@ -8178,7 +7902,7 @@ select = Sizzle.select = function( selector, context, results, seed ) {
8178
7902
  }
8179
7903
 
8180
7904
  // Fetch a seed set for right-to-left matching
8181
- i = matchExpr[ "needsContext" ].test( selector ) ? 0 : tokens.length;
7905
+ i = matchExpr.needsContext.test( selector ) ? 0 : tokens.length;
8182
7906
  while ( i-- ) {
8183
7907
  token = tokens[ i ];
8184
7908
 
@@ -8191,8 +7915,8 @@ select = Sizzle.select = function( selector, context, results, seed ) {
8191
7915
  // Search, expanding context for leading sibling combinators
8192
7916
  if ( ( seed = find(
8193
7917
  token.matches[ 0 ].replace( runescape, funescape ),
8194
- rsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) ||
8195
- context
7918
+ rsibling.test( tokens[ 0 ].type ) &&
7919
+ testContext( context.parentNode ) || context
8196
7920
  ) ) ) {
8197
7921
 
8198
7922
  // If seed is empty or no tokens remain, we can return early
@@ -8219,21 +7943,18 @@ select = Sizzle.select = function( selector, context, results, seed ) {
8219
7943
  !context || rsibling.test( selector ) && testContext( context.parentNode ) || context
8220
7944
  );
8221
7945
  return results;
8222
- };
7946
+ }
8223
7947
 
8224
7948
  // One-time assignments
8225
7949
 
7950
+ // Support: Android <=4.0 - 4.1+
8226
7951
  // Sort stability
8227
7952
  support.sortStable = expando.split( "" ).sort( sortOrder ).join( "" ) === expando;
8228
7953
 
8229
- // Support: Chrome 14-35+
8230
- // Always assume duplicates if they aren't passed to the comparison function
8231
- support.detectDuplicates = !!hasDuplicate;
8232
-
8233
7954
  // Initialize against the default document
8234
7955
  setDocument();
8235
7956
 
8236
- // Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
7957
+ // Support: Android <=4.0 - 4.1+
8237
7958
  // Detached nodes confoundingly follow *each other*
8238
7959
  support.sortDetached = assert( function( el ) {
8239
7960
 
@@ -8241,68 +7962,29 @@ support.sortDetached = assert( function( el ) {
8241
7962
  return el.compareDocumentPosition( document.createElement( "fieldset" ) ) & 1;
8242
7963
  } );
8243
7964
 
8244
- // Support: IE<8
8245
- // Prevent attribute/property "interpolation"
8246
- // https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
8247
- if ( !assert( function( el ) {
8248
- el.innerHTML = "<a href='#'></a>";
8249
- return el.firstChild.getAttribute( "href" ) === "#";
8250
- } ) ) {
8251
- addHandle( "type|href|height|width", function( elem, name, isXML ) {
8252
- if ( !isXML ) {
8253
- return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
8254
- }
8255
- } );
8256
- }
8257
-
8258
- // Support: IE<9
8259
- // Use defaultValue in place of getAttribute("value")
8260
- if ( !support.attributes || !assert( function( el ) {
8261
- el.innerHTML = "<input/>";
8262
- el.firstChild.setAttribute( "value", "" );
8263
- return el.firstChild.getAttribute( "value" ) === "";
8264
- } ) ) {
8265
- addHandle( "value", function( elem, _name, isXML ) {
8266
- if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
8267
- return elem.defaultValue;
8268
- }
8269
- } );
8270
- }
8271
-
8272
- // Support: IE<9
8273
- // Use getAttributeNode to fetch booleans when getAttribute lies
8274
- if ( !assert( function( el ) {
8275
- return el.getAttribute( "disabled" ) == null;
8276
- } ) ) {
8277
- addHandle( booleans, function( elem, name, isXML ) {
8278
- var val;
8279
- if ( !isXML ) {
8280
- return elem[ name ] === true ? name.toLowerCase() :
8281
- ( val = elem.getAttributeNode( name ) ) && val.specified ?
8282
- val.value :
8283
- null;
8284
- }
8285
- } );
8286
- }
8287
-
8288
- return Sizzle;
8289
-
8290
- } )( window );
8291
-
8292
-
8293
-
8294
- jQuery.find = Sizzle;
8295
- jQuery.expr = Sizzle.selectors;
7965
+ jQuery.find = find;
8296
7966
 
8297
7967
  // Deprecated
8298
7968
  jQuery.expr[ ":" ] = jQuery.expr.pseudos;
8299
- jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;
8300
- jQuery.text = Sizzle.getText;
8301
- jQuery.isXMLDoc = Sizzle.isXML;
8302
- jQuery.contains = Sizzle.contains;
8303
- jQuery.escapeSelector = Sizzle.escape;
7969
+ jQuery.unique = jQuery.uniqueSort;
8304
7970
 
7971
+ // These have always been private, but they used to be documented
7972
+ // as part of Sizzle so let's maintain them in the 3.x line
7973
+ // for backwards compatibility purposes.
7974
+ find.compile = compile;
7975
+ find.select = select;
7976
+ find.setDocument = setDocument;
8305
7977
 
7978
+ find.escape = jQuery.escapeSelector;
7979
+ find.getText = jQuery.text;
7980
+ find.isXML = jQuery.isXMLDoc;
7981
+ find.selectors = jQuery.expr;
7982
+ find.support = jQuery.support;
7983
+ find.uniqueSort = jQuery.uniqueSort;
7984
+
7985
+ /* eslint-enable */
7986
+
7987
+ } )();
8306
7988
 
8307
7989
 
8308
7990
  var dir = function( elem, dir, until ) {
@@ -8336,13 +8018,6 @@ var siblings = function( n, elem ) {
8336
8018
 
8337
8019
  var rneedsContext = jQuery.expr.match.needsContext;
8338
8020
 
8339
-
8340
-
8341
- function nodeName( elem, name ) {
8342
-
8343
- return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
8344
-
8345
- }
8346
8021
  var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i );
8347
8022
 
8348
8023
 
@@ -8593,7 +8268,7 @@ jQuery.fn.extend( {
8593
8268
  if ( cur.nodeType < 11 && ( targets ?
8594
8269
  targets.index( cur ) > -1 :
8595
8270
 
8596
- // Don't pass non-elements to Sizzle
8271
+ // Don't pass non-elements to jQuery#find
8597
8272
  cur.nodeType === 1 &&
8598
8273
  jQuery.find.matchesSelector( cur, selectors ) ) ) {
8599
8274
 
@@ -9148,7 +8823,7 @@ jQuery.extend( {
9148
8823
 
9149
8824
  if ( jQuery.Deferred.exceptionHook ) {
9150
8825
  jQuery.Deferred.exceptionHook( e,
9151
- process.stackTrace );
8826
+ process.error );
9152
8827
  }
9153
8828
 
9154
8829
  // Support: Promises/A+ section 2.3.3.3.4.1
@@ -9176,10 +8851,17 @@ jQuery.extend( {
9176
8851
  process();
9177
8852
  } else {
9178
8853
 
9179
- // Call an optional hook to record the stack, in case of exception
8854
+ // Call an optional hook to record the error, in case of exception
9180
8855
  // since it's otherwise lost when execution goes async
9181
- if ( jQuery.Deferred.getStackHook ) {
9182
- process.stackTrace = jQuery.Deferred.getStackHook();
8856
+ if ( jQuery.Deferred.getErrorHook ) {
8857
+ process.error = jQuery.Deferred.getErrorHook();
8858
+
8859
+ // The deprecated alias of the above. While the name suggests
8860
+ // returning the stack, not an error instance, jQuery just passes
8861
+ // it directly to `console.warn` so both will work; an instance
8862
+ // just better cooperates with source maps.
8863
+ } else if ( jQuery.Deferred.getStackHook ) {
8864
+ process.error = jQuery.Deferred.getStackHook();
9183
8865
  }
9184
8866
  window.setTimeout( process );
9185
8867
  }
@@ -9354,12 +9036,16 @@ jQuery.extend( {
9354
9036
  // warn about them ASAP rather than swallowing them by default.
9355
9037
  var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
9356
9038
 
9357
- jQuery.Deferred.exceptionHook = function( error, stack ) {
9039
+ // If `jQuery.Deferred.getErrorHook` is defined, `asyncError` is an error
9040
+ // captured before the async barrier to get the original error cause
9041
+ // which may otherwise be hidden.
9042
+ jQuery.Deferred.exceptionHook = function( error, asyncError ) {
9358
9043
 
9359
9044
  // Support: IE 8 - 9 only
9360
9045
  // Console exists when dev tools are open, which can happen at any time
9361
9046
  if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {
9362
- window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack );
9047
+ window.console.warn( "jQuery.Deferred exception: " + error.message,
9048
+ error.stack, asyncError );
9363
9049
  }
9364
9050
  };
9365
9051
 
@@ -10415,25 +10101,6 @@ function returnFalse() {
10415
10101
  return false;
10416
10102
  }
10417
10103
 
10418
- // Support: IE <=9 - 11+
10419
- // focus() and blur() are asynchronous, except when they are no-op.
10420
- // So expect focus to be synchronous when the element is already active,
10421
- // and blur to be synchronous when the element is not already active.
10422
- // (focus and blur are always synchronous in other supported browsers,
10423
- // this just defines when we can count on it).
10424
- function expectSync( elem, type ) {
10425
- return ( elem === safeActiveElement() ) === ( type === "focus" );
10426
- }
10427
-
10428
- // Support: IE <=9 only
10429
- // Accessing document.activeElement can throw unexpectedly
10430
- // https://bugs.jquery.com/ticket/13393
10431
- function safeActiveElement() {
10432
- try {
10433
- return document.activeElement;
10434
- } catch ( err ) { }
10435
- }
10436
-
10437
10104
  function on( elem, types, selector, data, fn, one ) {
10438
10105
  var origFn, type;
10439
10106
 
@@ -10871,7 +10538,7 @@ jQuery.event = {
10871
10538
  el.click && nodeName( el, "input" ) ) {
10872
10539
 
10873
10540
  // dataPriv.set( el, "click", ... )
10874
- leverageNative( el, "click", returnTrue );
10541
+ leverageNative( el, "click", true );
10875
10542
  }
10876
10543
 
10877
10544
  // Return false to allow normal processing in the caller
@@ -10922,10 +10589,10 @@ jQuery.event = {
10922
10589
  // synthetic events by interrupting progress until reinvoked in response to
10923
10590
  // *native* events that it fires directly, ensuring that state changes have
10924
10591
  // already occurred before other listeners are invoked.
10925
- function leverageNative( el, type, expectSync ) {
10592
+ function leverageNative( el, type, isSetup ) {
10926
10593
 
10927
- // Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add
10928
- if ( !expectSync ) {
10594
+ // Missing `isSetup` indicates a trigger call, which must force setup through jQuery.event.add
10595
+ if ( !isSetup ) {
10929
10596
  if ( dataPriv.get( el, type ) === undefined ) {
10930
10597
  jQuery.event.add( el, type, returnTrue );
10931
10598
  }
@@ -10937,15 +10604,13 @@ function leverageNative( el, type, expectSync ) {
10937
10604
  jQuery.event.add( el, type, {
10938
10605
  namespace: false,
10939
10606
  handler: function( event ) {
10940
- var notAsync, result,
10607
+ var result,
10941
10608
  saved = dataPriv.get( this, type );
10942
10609
 
10943
10610
  if ( ( event.isTrigger & 1 ) && this[ type ] ) {
10944
10611
 
10945
10612
  // Interrupt processing of the outer synthetic .trigger()ed event
10946
- // Saved data should be false in such cases, but might be a leftover capture object
10947
- // from an async native handler (gh-4350)
10948
- if ( !saved.length ) {
10613
+ if ( !saved ) {
10949
10614
 
10950
10615
  // Store arguments for use when handling the inner native event
10951
10616
  // There will always be at least one argument (an event object), so this array
@@ -10954,33 +10619,22 @@ function leverageNative( el, type, expectSync ) {
10954
10619
  dataPriv.set( this, type, saved );
10955
10620
 
10956
10621
  // Trigger the native event and capture its result
10957
- // Support: IE <=9 - 11+
10958
- // focus() and blur() are asynchronous
10959
- notAsync = expectSync( this, type );
10960
10622
  this[ type ]();
10961
10623
  result = dataPriv.get( this, type );
10962
- if ( saved !== result || notAsync ) {
10963
- dataPriv.set( this, type, false );
10964
- } else {
10965
- result = {};
10966
- }
10624
+ dataPriv.set( this, type, false );
10625
+
10967
10626
  if ( saved !== result ) {
10968
10627
 
10969
10628
  // Cancel the outer synthetic event
10970
10629
  event.stopImmediatePropagation();
10971
10630
  event.preventDefault();
10972
10631
 
10973
- // Support: Chrome 86+
10974
- // In Chrome, if an element having a focusout handler is blurred by
10975
- // clicking outside of it, it invokes the handler synchronously. If
10976
- // that handler calls `.remove()` on the element, the data is cleared,
10977
- // leaving `result` undefined. We need to guard against this.
10978
- return result && result.value;
10632
+ return result;
10979
10633
  }
10980
10634
 
10981
10635
  // If this is an inner synthetic event for an event with a bubbling surrogate
10982
- // (focus or blur), assume that the surrogate already propagated from triggering the
10983
- // native event and prevent that from happening again here.
10636
+ // (focus or blur), assume that the surrogate already propagated from triggering
10637
+ // the native event and prevent that from happening again here.
10984
10638
  // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the
10985
10639
  // bubbling surrogate propagates *after* the non-bubbling base), but that seems
10986
10640
  // less bad than duplication.
@@ -10990,22 +10644,25 @@ function leverageNative( el, type, expectSync ) {
10990
10644
 
10991
10645
  // If this is a native event triggered above, everything is now in order
10992
10646
  // Fire an inner synthetic event with the original arguments
10993
- } else if ( saved.length ) {
10647
+ } else if ( saved ) {
10994
10648
 
10995
10649
  // ...and capture the result
10996
- dataPriv.set( this, type, {
10997
- value: jQuery.event.trigger(
10998
-
10999
- // Support: IE <=9 - 11+
11000
- // Extend with the prototype to reset the above stopImmediatePropagation()
11001
- jQuery.extend( saved[ 0 ], jQuery.Event.prototype ),
11002
- saved.slice( 1 ),
11003
- this
11004
- )
11005
- } );
11006
-
11007
- // Abort handling of the native event
11008
- event.stopImmediatePropagation();
10650
+ dataPriv.set( this, type, jQuery.event.trigger(
10651
+ saved[ 0 ],
10652
+ saved.slice( 1 ),
10653
+ this
10654
+ ) );
10655
+
10656
+ // Abort handling of the native event by all jQuery handlers while allowing
10657
+ // native handlers on the same element to run. On target, this is achieved
10658
+ // by stopping immediate propagation just on the jQuery event. However,
10659
+ // the native event is re-wrapped by a jQuery one on each level of the
10660
+ // propagation so the only way to stop it for jQuery is to stop it for
10661
+ // everyone via native `stopPropagation()`. This is not a problem for
10662
+ // focus/blur which don't bubble, but it does also stop click on checkboxes
10663
+ // and radios. We accept this limitation.
10664
+ event.stopPropagation();
10665
+ event.isImmediatePropagationStopped = returnTrue;
11009
10666
  }
11010
10667
  }
11011
10668
  } );
@@ -11144,18 +10801,73 @@ jQuery.each( {
11144
10801
  }, jQuery.event.addProp );
11145
10802
 
11146
10803
  jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) {
10804
+
10805
+ function focusMappedHandler( nativeEvent ) {
10806
+ if ( document.documentMode ) {
10807
+
10808
+ // Support: IE 11+
10809
+ // Attach a single focusin/focusout handler on the document while someone wants
10810
+ // focus/blur. This is because the former are synchronous in IE while the latter
10811
+ // are async. In other browsers, all those handlers are invoked synchronously.
10812
+
10813
+ // `handle` from private data would already wrap the event, but we need
10814
+ // to change the `type` here.
10815
+ var handle = dataPriv.get( this, "handle" ),
10816
+ event = jQuery.event.fix( nativeEvent );
10817
+ event.type = nativeEvent.type === "focusin" ? "focus" : "blur";
10818
+ event.isSimulated = true;
10819
+
10820
+ // First, handle focusin/focusout
10821
+ handle( nativeEvent );
10822
+
10823
+ // ...then, handle focus/blur
10824
+ //
10825
+ // focus/blur don't bubble while focusin/focusout do; simulate the former by only
10826
+ // invoking the handler at the lower level.
10827
+ if ( event.target === event.currentTarget ) {
10828
+
10829
+ // The setup part calls `leverageNative`, which, in turn, calls
10830
+ // `jQuery.event.add`, so event handle will already have been set
10831
+ // by this point.
10832
+ handle( event );
10833
+ }
10834
+ } else {
10835
+
10836
+ // For non-IE browsers, attach a single capturing handler on the document
10837
+ // while someone wants focusin/focusout.
10838
+ jQuery.event.simulate( delegateType, nativeEvent.target,
10839
+ jQuery.event.fix( nativeEvent ) );
10840
+ }
10841
+ }
10842
+
11147
10843
  jQuery.event.special[ type ] = {
11148
10844
 
11149
10845
  // Utilize native event if possible so blur/focus sequence is correct
11150
10846
  setup: function() {
11151
10847
 
10848
+ var attaches;
10849
+
11152
10850
  // Claim the first handler
11153
10851
  // dataPriv.set( this, "focus", ... )
11154
10852
  // dataPriv.set( this, "blur", ... )
11155
- leverageNative( this, type, expectSync );
10853
+ leverageNative( this, type, true );
11156
10854
 
11157
- // Return false to allow normal processing in the caller
11158
- return false;
10855
+ if ( document.documentMode ) {
10856
+
10857
+ // Support: IE 9 - 11+
10858
+ // We use the same native handler for focusin & focus (and focusout & blur)
10859
+ // so we need to coordinate setup & teardown parts between those events.
10860
+ // Use `delegateType` as the key as `type` is already used by `leverageNative`.
10861
+ attaches = dataPriv.get( this, delegateType );
10862
+ if ( !attaches ) {
10863
+ this.addEventListener( delegateType, focusMappedHandler );
10864
+ }
10865
+ dataPriv.set( this, delegateType, ( attaches || 0 ) + 1 );
10866
+ } else {
10867
+
10868
+ // Return false to allow normal processing in the caller
10869
+ return false;
10870
+ }
11159
10871
  },
11160
10872
  trigger: function() {
11161
10873
 
@@ -11166,6 +10878,24 @@ jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateTyp
11166
10878
  return true;
11167
10879
  },
11168
10880
 
10881
+ teardown: function() {
10882
+ var attaches;
10883
+
10884
+ if ( document.documentMode ) {
10885
+ attaches = dataPriv.get( this, delegateType ) - 1;
10886
+ if ( !attaches ) {
10887
+ this.removeEventListener( delegateType, focusMappedHandler );
10888
+ dataPriv.remove( this, delegateType );
10889
+ } else {
10890
+ dataPriv.set( this, delegateType, attaches );
10891
+ }
10892
+ } else {
10893
+
10894
+ // Return false to indicate standard teardown should be applied
10895
+ return false;
10896
+ }
10897
+ },
10898
+
11169
10899
  // Suppress native focus or blur if we're currently inside
11170
10900
  // a leveraged native-event stack
11171
10901
  _default: function( event ) {
@@ -11174,6 +10904,58 @@ jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateTyp
11174
10904
 
11175
10905
  delegateType: delegateType
11176
10906
  };
10907
+
10908
+ // Support: Firefox <=44
10909
+ // Firefox doesn't have focus(in | out) events
10910
+ // Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
10911
+ //
10912
+ // Support: Chrome <=48 - 49, Safari <=9.0 - 9.1
10913
+ // focus(in | out) events fire after focus & blur events,
10914
+ // which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
10915
+ // Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857
10916
+ //
10917
+ // Support: IE 9 - 11+
10918
+ // To preserve relative focusin/focus & focusout/blur event order guaranteed on the 3.x branch,
10919
+ // attach a single handler for both events in IE.
10920
+ jQuery.event.special[ delegateType ] = {
10921
+ setup: function() {
10922
+
10923
+ // Handle: regular nodes (via `this.ownerDocument`), window
10924
+ // (via `this.document`) & document (via `this`).
10925
+ var doc = this.ownerDocument || this.document || this,
10926
+ dataHolder = document.documentMode ? this : doc,
10927
+ attaches = dataPriv.get( dataHolder, delegateType );
10928
+
10929
+ // Support: IE 9 - 11+
10930
+ // We use the same native handler for focusin & focus (and focusout & blur)
10931
+ // so we need to coordinate setup & teardown parts between those events.
10932
+ // Use `delegateType` as the key as `type` is already used by `leverageNative`.
10933
+ if ( !attaches ) {
10934
+ if ( document.documentMode ) {
10935
+ this.addEventListener( delegateType, focusMappedHandler );
10936
+ } else {
10937
+ doc.addEventListener( type, focusMappedHandler, true );
10938
+ }
10939
+ }
10940
+ dataPriv.set( dataHolder, delegateType, ( attaches || 0 ) + 1 );
10941
+ },
10942
+ teardown: function() {
10943
+ var doc = this.ownerDocument || this.document || this,
10944
+ dataHolder = document.documentMode ? this : doc,
10945
+ attaches = dataPriv.get( dataHolder, delegateType ) - 1;
10946
+
10947
+ if ( !attaches ) {
10948
+ if ( document.documentMode ) {
10949
+ this.removeEventListener( delegateType, focusMappedHandler );
10950
+ } else {
10951
+ doc.removeEventListener( type, focusMappedHandler, true );
10952
+ }
10953
+ dataPriv.remove( dataHolder, delegateType );
10954
+ } else {
10955
+ dataPriv.set( dataHolder, delegateType, attaches );
10956
+ }
10957
+ }
10958
+ };
11177
10959
  } );
11178
10960
 
11179
10961
  // Create mouseenter/leave events using mouseover/out and event-time checks
@@ -11476,7 +11258,8 @@ jQuery.extend( {
11476
11258
  if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
11477
11259
  !jQuery.isXMLDoc( elem ) ) {
11478
11260
 
11479
- // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2
11261
+ // We eschew jQuery#find here for performance reasons:
11262
+ // https://jsperf.com/getall-vs-sizzle/2
11480
11263
  destElements = getAll( clone );
11481
11264
  srcElements = getAll( elem );
11482
11265
 
@@ -11752,15 +11535,6 @@ var swap = function( elem, options, callback ) {
11752
11535
 
11753
11536
  var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" );
11754
11537
 
11755
- var whitespace = "[\\x20\\t\\r\\n\\f]";
11756
-
11757
-
11758
- var rtrimCSS = new RegExp(
11759
- "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$",
11760
- "g"
11761
- );
11762
-
11763
-
11764
11538
 
11765
11539
 
11766
11540
  ( function() {
@@ -12069,7 +11843,8 @@ function setPositiveNumber( _elem, value, subtract ) {
12069
11843
  function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {
12070
11844
  var i = dimension === "width" ? 1 : 0,
12071
11845
  extra = 0,
12072
- delta = 0;
11846
+ delta = 0,
11847
+ marginDelta = 0;
12073
11848
 
12074
11849
  // Adjustment may not be necessary
12075
11850
  if ( box === ( isBorderBox ? "border" : "content" ) ) {
@@ -12079,8 +11854,10 @@ function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computed
12079
11854
  for ( ; i < 4; i += 2 ) {
12080
11855
 
12081
11856
  // Both box models exclude margin
11857
+ // Count margin delta separately to only add it after scroll gutter adjustment.
11858
+ // This is needed to make negative margins work with `outerHeight( true )` (gh-3982).
12082
11859
  if ( box === "margin" ) {
12083
- delta += jQuery.css( elem, box + cssExpand[ i ], true, styles );
11860
+ marginDelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );
12084
11861
  }
12085
11862
 
12086
11863
  // If we get here with a content-box, we're seeking "padding" or "border" or "margin"
@@ -12131,7 +11908,7 @@ function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computed
12131
11908
  ) ) || 0;
12132
11909
  }
12133
11910
 
12134
- return delta;
11911
+ return delta + marginDelta;
12135
11912
  }
12136
11913
 
12137
11914
  function getWidthOrHeight( elem, dimension, extra ) {
@@ -12229,26 +12006,35 @@ jQuery.extend( {
12229
12006
 
12230
12007
  // Don't automatically add "px" to these possibly-unitless properties
12231
12008
  cssNumber: {
12232
- "animationIterationCount": true,
12233
- "columnCount": true,
12234
- "fillOpacity": true,
12235
- "flexGrow": true,
12236
- "flexShrink": true,
12237
- "fontWeight": true,
12238
- "gridArea": true,
12239
- "gridColumn": true,
12240
- "gridColumnEnd": true,
12241
- "gridColumnStart": true,
12242
- "gridRow": true,
12243
- "gridRowEnd": true,
12244
- "gridRowStart": true,
12245
- "lineHeight": true,
12246
- "opacity": true,
12247
- "order": true,
12248
- "orphans": true,
12249
- "widows": true,
12250
- "zIndex": true,
12251
- "zoom": true
12009
+ animationIterationCount: true,
12010
+ aspectRatio: true,
12011
+ borderImageSlice: true,
12012
+ columnCount: true,
12013
+ flexGrow: true,
12014
+ flexShrink: true,
12015
+ fontWeight: true,
12016
+ gridArea: true,
12017
+ gridColumn: true,
12018
+ gridColumnEnd: true,
12019
+ gridColumnStart: true,
12020
+ gridRow: true,
12021
+ gridRowEnd: true,
12022
+ gridRowStart: true,
12023
+ lineHeight: true,
12024
+ opacity: true,
12025
+ order: true,
12026
+ orphans: true,
12027
+ scale: true,
12028
+ widows: true,
12029
+ zIndex: true,
12030
+ zoom: true,
12031
+
12032
+ // SVG-related
12033
+ fillOpacity: true,
12034
+ floodOpacity: true,
12035
+ stopOpacity: true,
12036
+ strokeMiterlimit: true,
12037
+ strokeOpacity: true
12252
12038
  },
12253
12039
 
12254
12040
  // Add in properties whose names you wish to fix before
@@ -13164,7 +12950,31 @@ jQuery.each( [ "radio", "checkbox" ], function() {
13164
12950
  // Return jQuery for attributes-only inclusion
13165
12951
 
13166
12952
 
13167
- support.focusin = "onfocusin" in window;
12953
+ // Cross-browser xml parsing
12954
+ jQuery.parseXML = function( data ) {
12955
+ var xml, parserErrorElem;
12956
+ if ( !data || typeof data !== "string" ) {
12957
+ return null;
12958
+ }
12959
+
12960
+ // Support: IE 9 - 11 only
12961
+ // IE throws on parseFromString with invalid input.
12962
+ try {
12963
+ xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" );
12964
+ } catch ( e ) {}
12965
+
12966
+ parserErrorElem = xml && xml.getElementsByTagName( "parsererror" )[ 0 ];
12967
+ if ( !xml || parserErrorElem ) {
12968
+ jQuery.error( "Invalid XML: " + (
12969
+ parserErrorElem ?
12970
+ jQuery.map( parserErrorElem.childNodes, function( el ) {
12971
+ return el.textContent;
12972
+ } ).join( "\n" ) :
12973
+ data
12974
+ ) );
12975
+ }
12976
+ return xml;
12977
+ };
13168
12978
 
13169
12979
 
13170
12980
  var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
@@ -13352,79 +13162,6 @@ jQuery.fn.extend( {
13352
13162
  } );
13353
13163
 
13354
13164
 
13355
- // Support: Firefox <=44
13356
- // Firefox doesn't have focus(in | out) events
13357
- // Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
13358
- //
13359
- // Support: Chrome <=48 - 49, Safari <=9.0 - 9.1
13360
- // focus(in | out) events fire after focus & blur events,
13361
- // which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
13362
- // Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857
13363
- if ( !support.focusin ) {
13364
- jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) {
13365
-
13366
- // Attach a single capturing handler on the document while someone wants focusin/focusout
13367
- var handler = function( event ) {
13368
- jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );
13369
- };
13370
-
13371
- jQuery.event.special[ fix ] = {
13372
- setup: function() {
13373
-
13374
- // Handle: regular nodes (via `this.ownerDocument`), window
13375
- // (via `this.document`) & document (via `this`).
13376
- var doc = this.ownerDocument || this.document || this,
13377
- attaches = dataPriv.access( doc, fix );
13378
-
13379
- if ( !attaches ) {
13380
- doc.addEventListener( orig, handler, true );
13381
- }
13382
- dataPriv.access( doc, fix, ( attaches || 0 ) + 1 );
13383
- },
13384
- teardown: function() {
13385
- var doc = this.ownerDocument || this.document || this,
13386
- attaches = dataPriv.access( doc, fix ) - 1;
13387
-
13388
- if ( !attaches ) {
13389
- doc.removeEventListener( orig, handler, true );
13390
- dataPriv.remove( doc, fix );
13391
-
13392
- } else {
13393
- dataPriv.access( doc, fix, attaches );
13394
- }
13395
- }
13396
- };
13397
- } );
13398
- }
13399
-
13400
-
13401
- // Cross-browser xml parsing
13402
- jQuery.parseXML = function( data ) {
13403
- var xml, parserErrorElem;
13404
- if ( !data || typeof data !== "string" ) {
13405
- return null;
13406
- }
13407
-
13408
- // Support: IE 9 - 11 only
13409
- // IE throws on parseFromString with invalid input.
13410
- try {
13411
- xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" );
13412
- } catch ( e ) {}
13413
-
13414
- parserErrorElem = xml && xml.getElementsByTagName( "parsererror" )[ 0 ];
13415
- if ( !xml || parserErrorElem ) {
13416
- jQuery.error( "Invalid XML: " + (
13417
- parserErrorElem ?
13418
- jQuery.map( parserErrorElem.childNodes, function( el ) {
13419
- return el.textContent;
13420
- } ).join( "\n" ) :
13421
- data
13422
- ) );
13423
- }
13424
- return xml;
13425
- };
13426
-
13427
-
13428
13165
  var
13429
13166
  rbracket = /\[\]$/,
13430
13167
  rCRLF = /\r?\n/g,
@@ -15831,4 +15568,4 @@ const initializeKLPLoginWidget = (containerId, options) => {
15831
15568
 
15832
15569
  exports.initializeKLPLoginWidget = initializeKLPLoginWidget;
15833
15570
 
15834
- //# sourceMappingURL=klp-widget.controller-5d5afa10.js.map
15571
+ //# sourceMappingURL=klp-widget.controller-d23f72bb.js.map