sample_filter 0.1.1 → 0.1.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 (648) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +10 -3
  3. data/lib/sample_filter/engine.rb +0 -5
  4. data/lib/sample_filter/params_set.rb +1 -1
  5. data/lib/sample_filter/version.rb +1 -1
  6. data/spec/ar_helper.rb +17 -0
  7. data/spec/dummy/app/assets/javascripts/application.js +3 -1
  8. data/spec/dummy/app/assets/stylesheets/application.css +2 -1
  9. data/spec/dummy/log/development.log +1748 -0
  10. data/spec/dummy/node_modules/air-datepicker/LICENSE.md +21 -0
  11. data/spec/dummy/node_modules/air-datepicker/README.md +112 -0
  12. data/spec/dummy/node_modules/air-datepicker/dist/css/datepicker.css +622 -0
  13. data/{lib/assets/stylesheets/sample_filter → spec/dummy/node_modules/air-datepicker/dist/css}/datepicker.min.css +0 -0
  14. data/spec/dummy/node_modules/air-datepicker/dist/js/datepicker.js +2236 -0
  15. data/{lib/assets/javascripts/sample_filter → spec/dummy/node_modules/air-datepicker/dist/js}/datepicker.min.js +0 -0
  16. data/spec/dummy/node_modules/air-datepicker/dist/js/i18n/datepicker.cs.js +12 -0
  17. data/spec/dummy/node_modules/air-datepicker/dist/js/i18n/datepicker.da.js +12 -0
  18. data/spec/dummy/node_modules/air-datepicker/dist/js/i18n/datepicker.de.js +13 -0
  19. data/spec/dummy/node_modules/air-datepicker/dist/js/i18n/datepicker.en.js +12 -0
  20. data/spec/dummy/node_modules/air-datepicker/dist/js/i18n/datepicker.es.js +12 -0
  21. data/spec/dummy/node_modules/air-datepicker/dist/js/i18n/datepicker.fi.js +13 -0
  22. data/spec/dummy/node_modules/air-datepicker/dist/js/i18n/datepicker.fr.js +12 -0
  23. data/spec/dummy/node_modules/air-datepicker/dist/js/i18n/datepicker.hu.js +12 -0
  24. data/spec/dummy/node_modules/air-datepicker/dist/js/i18n/datepicker.nl.js +12 -0
  25. data/spec/dummy/node_modules/air-datepicker/dist/js/i18n/datepicker.pl.js +13 -0
  26. data/spec/dummy/node_modules/air-datepicker/dist/js/i18n/datepicker.pt-BR.js +12 -0
  27. data/spec/dummy/node_modules/air-datepicker/dist/js/i18n/datepicker.pt.js +12 -0
  28. data/spec/dummy/node_modules/air-datepicker/dist/js/i18n/datepicker.ro.js +13 -0
  29. data/spec/dummy/node_modules/air-datepicker/dist/js/i18n/datepicker.sk.js +12 -0
  30. data/spec/dummy/node_modules/air-datepicker/dist/js/i18n/datepicker.zh.js +12 -0
  31. data/spec/dummy/node_modules/air-datepicker/gulpfile.js +38 -0
  32. data/spec/dummy/node_modules/air-datepicker/package.json +53 -0
  33. data/spec/dummy/node_modules/air-datepicker/src/js/air-datepicker.js +4 -0
  34. data/spec/dummy/node_modules/air-datepicker/src/js/body.js +311 -0
  35. data/spec/dummy/node_modules/air-datepicker/src/js/datepicker.js +1493 -0
  36. data/spec/dummy/node_modules/air-datepicker/src/js/i18n/datepicker.cs.js +12 -0
  37. data/spec/dummy/node_modules/air-datepicker/src/js/i18n/datepicker.da.js +12 -0
  38. data/spec/dummy/node_modules/air-datepicker/src/js/i18n/datepicker.de.js +12 -0
  39. data/spec/dummy/node_modules/air-datepicker/src/js/i18n/datepicker.en.js +12 -0
  40. data/spec/dummy/node_modules/air-datepicker/src/js/i18n/datepicker.es.js +12 -0
  41. data/spec/dummy/node_modules/air-datepicker/src/js/i18n/datepicker.fi.js +12 -0
  42. data/spec/dummy/node_modules/air-datepicker/src/js/i18n/datepicker.fr.js +12 -0
  43. data/spec/dummy/node_modules/air-datepicker/src/js/i18n/datepicker.hu.js +12 -0
  44. data/spec/dummy/node_modules/air-datepicker/src/js/i18n/datepicker.nl.js +12 -0
  45. data/spec/dummy/node_modules/air-datepicker/src/js/i18n/datepicker.pl.js +12 -0
  46. data/spec/dummy/node_modules/air-datepicker/src/js/i18n/datepicker.pt-BR.js +12 -0
  47. data/spec/dummy/node_modules/air-datepicker/src/js/i18n/datepicker.pt.js +12 -0
  48. data/spec/dummy/node_modules/air-datepicker/src/js/i18n/datepicker.ro.js +12 -0
  49. data/spec/dummy/node_modules/air-datepicker/src/js/i18n/datepicker.sk.js +12 -0
  50. data/spec/dummy/node_modules/air-datepicker/src/js/i18n/datepicker.zh.js +12 -0
  51. data/spec/dummy/node_modules/air-datepicker/src/js/navigation.js +145 -0
  52. data/spec/dummy/node_modules/air-datepicker/src/js/timepicker.js +283 -0
  53. data/spec/dummy/node_modules/air-datepicker/src/sass/_datepicker-config.scss +84 -0
  54. data/spec/dummy/node_modules/air-datepicker/src/sass/cell.scss +173 -0
  55. data/spec/dummy/node_modules/air-datepicker/src/sass/datepicker.scss +149 -0
  56. data/spec/dummy/node_modules/air-datepicker/src/sass/navigation.scss +95 -0
  57. data/spec/dummy/node_modules/air-datepicker/src/sass/timepicker.scss +251 -0
  58. data/spec/dummy/node_modules/air-datepicker/tasks/css.js +24 -0
  59. data/spec/dummy/node_modules/air-datepicker/tasks/cssPage.js +17 -0
  60. data/spec/dummy/node_modules/air-datepicker/tasks/gzip.js +9 -0
  61. data/spec/dummy/node_modules/air-datepicker/tasks/i18n.js +12 -0
  62. data/spec/dummy/node_modules/air-datepicker/tasks/jade.js +38 -0
  63. data/spec/dummy/node_modules/air-datepicker/tasks/js.js +26 -0
  64. data/spec/dummy/node_modules/jquery/AUTHORS.txt +301 -0
  65. data/spec/dummy/node_modules/jquery/LICENSE.txt +36 -0
  66. data/spec/dummy/node_modules/jquery/README.md +67 -0
  67. data/spec/dummy/node_modules/jquery/bower.json +14 -0
  68. data/spec/dummy/node_modules/jquery/dist/core.js +476 -0
  69. data/spec/dummy/node_modules/jquery/dist/jquery.js +10253 -0
  70. data/spec/dummy/node_modules/jquery/dist/jquery.min.js +4 -0
  71. data/spec/dummy/node_modules/jquery/dist/jquery.min.map +1 -0
  72. data/spec/dummy/node_modules/jquery/dist/jquery.slim.js +8160 -0
  73. data/spec/dummy/node_modules/jquery/dist/jquery.slim.min.js +4 -0
  74. data/spec/dummy/node_modules/jquery/dist/jquery.slim.min.map +1 -0
  75. data/spec/dummy/node_modules/jquery/external/sizzle/LICENSE.txt +36 -0
  76. data/spec/dummy/node_modules/jquery/external/sizzle/dist/sizzle.js +2272 -0
  77. data/spec/dummy/node_modules/jquery/external/sizzle/dist/sizzle.min.js +3 -0
  78. data/spec/dummy/node_modules/jquery/external/sizzle/dist/sizzle.min.map +1 -0
  79. data/spec/dummy/node_modules/jquery/package.json +97 -0
  80. data/spec/dummy/node_modules/jquery/src/ajax/jsonp.js +102 -0
  81. data/spec/dummy/node_modules/jquery/src/ajax/load.js +76 -0
  82. data/spec/dummy/node_modules/jquery/src/ajax/parseXML.js +30 -0
  83. data/spec/dummy/node_modules/jquery/src/ajax/script.js +77 -0
  84. data/spec/dummy/node_modules/jquery/src/ajax/var/location.js +5 -0
  85. data/spec/dummy/node_modules/jquery/src/ajax/var/nonce.js +7 -0
  86. data/spec/dummy/node_modules/jquery/src/ajax/var/rquery.js +5 -0
  87. data/spec/dummy/node_modules/jquery/src/ajax/xhr.js +169 -0
  88. data/spec/dummy/node_modules/jquery/src/ajax.js +855 -0
  89. data/spec/dummy/node_modules/jquery/src/attributes/attr.js +141 -0
  90. data/spec/dummy/node_modules/jquery/src/attributes/classes.js +174 -0
  91. data/spec/dummy/node_modules/jquery/src/attributes/prop.js +143 -0
  92. data/spec/dummy/node_modules/jquery/src/attributes/support.js +33 -0
  93. data/spec/dummy/node_modules/jquery/src/attributes/val.js +190 -0
  94. data/spec/dummy/node_modules/jquery/src/attributes.js +13 -0
  95. data/spec/dummy/node_modules/jquery/src/callbacks.js +234 -0
  96. data/spec/dummy/node_modules/jquery/src/core/DOMEval.js +16 -0
  97. data/spec/dummy/node_modules/jquery/src/core/access.js +70 -0
  98. data/spec/dummy/node_modules/jquery/src/core/init.js +128 -0
  99. data/spec/dummy/node_modules/jquery/src/core/nodeName.js +13 -0
  100. data/spec/dummy/node_modules/jquery/src/core/parseHTML.js +65 -0
  101. data/spec/dummy/node_modules/jquery/src/core/ready-no-deferred.js +96 -0
  102. data/spec/dummy/node_modules/jquery/src/core/ready.js +86 -0
  103. data/spec/dummy/node_modules/jquery/src/core/readyException.js +13 -0
  104. data/spec/dummy/node_modules/jquery/src/core/stripAndCollapse.js +14 -0
  105. data/spec/dummy/node_modules/jquery/src/core/support.js +20 -0
  106. data/spec/dummy/node_modules/jquery/src/core/var/rsingleTag.js +6 -0
  107. data/spec/dummy/node_modules/jquery/src/core.js +476 -0
  108. data/spec/dummy/node_modules/jquery/src/css/addGetHookIf.js +26 -0
  109. data/spec/dummy/node_modules/jquery/src/css/adjustCSS.js +71 -0
  110. data/spec/dummy/node_modules/jquery/src/css/curCSS.js +65 -0
  111. data/spec/dummy/node_modules/jquery/src/css/hiddenVisibleSelectors.js +15 -0
  112. data/spec/dummy/node_modules/jquery/src/css/showHide.js +105 -0
  113. data/spec/dummy/node_modules/jquery/src/css/support.js +89 -0
  114. data/spec/dummy/node_modules/jquery/src/css/var/cssExpand.js +5 -0
  115. data/spec/dummy/node_modules/jquery/src/css/var/getStyles.js +17 -0
  116. data/spec/dummy/node_modules/jquery/src/css/var/isHiddenWithinTree.js +34 -0
  117. data/spec/dummy/node_modules/jquery/src/css/var/rmargin.js +5 -0
  118. data/spec/dummy/node_modules/jquery/src/css/var/rnumnonpx.js +7 -0
  119. data/spec/dummy/node_modules/jquery/src/css/var/swap.js +26 -0
  120. data/spec/dummy/node_modules/jquery/src/css.js +438 -0
  121. data/spec/dummy/node_modules/jquery/src/data/Data.js +161 -0
  122. data/spec/dummy/node_modules/jquery/src/data/var/acceptData.js +19 -0
  123. data/spec/dummy/node_modules/jquery/src/data/var/dataPriv.js +7 -0
  124. data/spec/dummy/node_modules/jquery/src/data/var/dataUser.js +7 -0
  125. data/spec/dummy/node_modules/jquery/src/data.js +179 -0
  126. data/spec/dummy/node_modules/jquery/src/deferred/exceptionHook.js +21 -0
  127. data/spec/dummy/node_modules/jquery/src/deferred.js +391 -0
  128. data/spec/dummy/node_modules/jquery/src/deprecated.js +40 -0
  129. data/spec/dummy/node_modules/jquery/src/dimensions.js +56 -0
  130. data/spec/dummy/node_modules/jquery/src/effects/Tween.js +123 -0
  131. data/spec/dummy/node_modules/jquery/src/effects/animatedSelector.js +15 -0
  132. data/spec/dummy/node_modules/jquery/src/effects.js +699 -0
  133. data/spec/dummy/node_modules/jquery/src/event/ajax.js +22 -0
  134. data/spec/dummy/node_modules/jquery/src/event/alias.js +29 -0
  135. data/spec/dummy/node_modules/jquery/src/event/focusin.js +55 -0
  136. data/spec/dummy/node_modules/jquery/src/event/support.js +11 -0
  137. data/spec/dummy/node_modules/jquery/src/event/trigger.js +185 -0
  138. data/spec/dummy/node_modules/jquery/src/event.js +746 -0
  139. data/spec/dummy/node_modules/jquery/src/exports/amd.js +26 -0
  140. data/spec/dummy/node_modules/jquery/src/exports/global.js +34 -0
  141. data/spec/dummy/node_modules/jquery/src/jquery.js +41 -0
  142. data/spec/dummy/node_modules/jquery/src/manipulation/_evalUrl.js +23 -0
  143. data/spec/dummy/node_modules/jquery/src/manipulation/buildFragment.js +104 -0
  144. data/spec/dummy/node_modules/jquery/src/manipulation/getAll.js +32 -0
  145. data/spec/dummy/node_modules/jquery/src/manipulation/setGlobalEval.js +22 -0
  146. data/spec/dummy/node_modules/jquery/src/manipulation/support.js +35 -0
  147. data/spec/dummy/node_modules/jquery/src/manipulation/var/rcheckableType.js +5 -0
  148. data/spec/dummy/node_modules/jquery/src/manipulation/var/rscriptType.js +5 -0
  149. data/spec/dummy/node_modules/jquery/src/manipulation/var/rtagName.js +5 -0
  150. data/spec/dummy/node_modules/jquery/src/manipulation/wrapMap.js +29 -0
  151. data/spec/dummy/node_modules/jquery/src/manipulation.js +488 -0
  152. data/spec/dummy/node_modules/jquery/src/offset.js +229 -0
  153. data/spec/dummy/node_modules/jquery/src/queue/delay.js +24 -0
  154. data/spec/dummy/node_modules/jquery/src/queue.js +145 -0
  155. data/spec/dummy/node_modules/jquery/src/selector-native.js +237 -0
  156. data/spec/dummy/node_modules/jquery/src/selector-sizzle.js +19 -0
  157. data/spec/dummy/node_modules/jquery/src/selector.js +3 -0
  158. data/spec/dummy/node_modules/jquery/src/serialize.js +130 -0
  159. data/spec/dummy/node_modules/jquery/src/traversing/findFilter.js +106 -0
  160. data/spec/dummy/node_modules/jquery/src/traversing/var/dir.js +22 -0
  161. data/spec/dummy/node_modules/jquery/src/traversing/var/rneedsContext.js +8 -0
  162. data/spec/dummy/node_modules/jquery/src/traversing/var/siblings.js +17 -0
  163. data/spec/dummy/node_modules/jquery/src/traversing.js +191 -0
  164. data/spec/dummy/node_modules/jquery/src/var/ObjectFunctionString.js +7 -0
  165. data/spec/dummy/node_modules/jquery/src/var/arr.js +5 -0
  166. data/spec/dummy/node_modules/jquery/src/var/class2type.js +6 -0
  167. data/spec/dummy/node_modules/jquery/src/var/concat.js +7 -0
  168. data/spec/dummy/node_modules/jquery/src/var/document.js +5 -0
  169. data/spec/dummy/node_modules/jquery/src/var/documentElement.js +7 -0
  170. data/spec/dummy/node_modules/jquery/src/var/fnToString.js +7 -0
  171. data/spec/dummy/node_modules/jquery/src/var/getProto.js +5 -0
  172. data/spec/dummy/node_modules/jquery/src/var/hasOwn.js +7 -0
  173. data/spec/dummy/node_modules/jquery/src/var/indexOf.js +7 -0
  174. data/spec/dummy/node_modules/jquery/src/var/pnum.js +5 -0
  175. data/spec/dummy/node_modules/jquery/src/var/push.js +7 -0
  176. data/spec/dummy/node_modules/jquery/src/var/rcssNum.js +9 -0
  177. data/spec/dummy/node_modules/jquery/src/var/rnothtmlwhite.js +8 -0
  178. data/spec/dummy/node_modules/jquery/src/var/slice.js +7 -0
  179. data/spec/dummy/node_modules/jquery/src/var/support.js +6 -0
  180. data/spec/dummy/node_modules/jquery/src/var/toString.js +7 -0
  181. data/spec/dummy/node_modules/jquery/src/wrap.js +77 -0
  182. data/spec/dummy/package.json +3 -1
  183. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/-0/-0JS25ly2YV0mmi4DzTK_P5JKZfKWqUAotWohl9JkHM.cache +0 -0
  184. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/-7/-7EQ2HMmpFkt4mrG6DQGvYEfEJTSWJncL8n6zjs8clQ.cache +1 -0
  185. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/-A/-A53ARcxEZ2N7Yb9odFkHi5SDjEWHg08JuBrwQi18Ok.cache +0 -0
  186. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/-M/-M5EOCx4u3De5tZw-v5JdiSuVJGbd76iSZkXdKBWqus.cache +0 -0
  187. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/-r/-Rmr6Pd_n25E3ewSOXKuYiE1i_9oHUczWs8i57c8DZk.cache +1 -0
  188. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/-s/-s9QdOwJvLIF2r0tY9bJoWaksiUnybO-wdwW-bDJ_JU.cache +1 -0
  189. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/0D/0DqxCheBXQebuw4pf-d7DEAx0ybjriItwE2CYRa2jSw.cache +0 -0
  190. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/0E/0ERpVFfL6LjpMsQbgvG3cT1XtkbZkL-nX4esYfMA17o.cache +0 -0
  191. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/0K/0KjWmcxexKIM1aauVYBkFpDhVpaW8bi5KasVWuSRSkY.cache +0 -0
  192. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/0L/0LogTRcW97DGI8rJhlW25XQJJE5sZ7EX5X63JLH4TB0.cache +1 -0
  193. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/0L/0lLm1Icd7eV85FCYjKN5g1heu_pv-Zaw27sEBCrp-ow.cache +0 -0
  194. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/0V/0VmQOE4er83uvy4ABcqsejJmgfa-Nd_8iVTmaCCkPTk.cache +0 -0
  195. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/0m/0m0jVKrbKPfmTsnEJkFYkFjbf0Emd6unR5AANr8lUMQ.cache +0 -0
  196. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/0o/0OHAkeZfsTvJZ7jJbXhozUgeEIqXZON05wXvEr2EMh8.cache +0 -0
  197. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/0s/0sE9PD-OZXsnafZs3vAuUgiu1ta6QdYEFD0EUiF8L4U.cache +0 -0
  198. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/1x/1XP5G1cPAe9e-7vSTc5k8Dxosn9wgLT0Dom-iB9Zq9w.cache +1 -0
  199. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/1x/1xa4KtV9CQZBqORYm4cATdf03vf-CqmNk_WAtIHoAL8.cache +0 -0
  200. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/23/23EsBvAJdyNUHi3MKaeSrYCHJ8i6xkUFX7R0wC-LdGU.cache +0 -0
  201. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/2B/2Bcr9cdpyDgkEkWC2erUPPookJDFP9AlUAUl-yjVocs.cache +0 -0
  202. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/2N/2Nn4PamPb5ZP1CmolgULaVxtLzGaTly3LlYGeMEzSN0.cache +1 -0
  203. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/2P/2Ps--iWyYplnQiEG8rep7JYRNmkwEi4nx-aXJ_v2xKY.cache +0 -0
  204. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/2c/2c8kaBvsjzhVGwDAqyWoNDcVx0LoOZ1jkrt94bi6NyY.cache +1 -0
  205. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/2c/2c8xA2gYtoDqhAtd0dn1dhTalYLRf74kj_yqgEh30Po.cache +0 -0
  206. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/2g/2GTnPIotsy887RTXdcoU6qfJ9O4IXu9aHNpQaThkF5o.cache +0 -0
  207. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/2s/2sX1SWpFolUUQOGL7N_PoUWf1Kj19nPXqyk4pLPuAJA.cache +0 -0
  208. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/2w/2WtczeMDlei-CTN00vDU7JUZnHt6LzM7DxfMp-v-WUU.cache +1 -0
  209. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/32/32EheXWMywHASA71hZCqzG6JnFsCoX85WF3N4w_BnzI.cache +1 -0
  210. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/38/38jtPZA1I-oUrZ93q87mgCcU7uyr6zaOWuhl1gHrnVE.cache +1 -0
  211. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/3J/3JKiR2QLdGmHUcVw1PVTm2PPn68XtlAip1B49DxM_4s.cache +0 -0
  212. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/3J/3jLtwBpEoyn9JOqBWjt2J8iy-VHUhKpOm7JCzvo3-Mw.cache +1 -0
  213. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/3S/3SvPfFGxG0ALyeeJ64z65USRWexTNZogI5veQo85dQg.cache +0 -0
  214. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/3S/3sESAVlJUT6Q--9gX3G8ooEySsR736HA7jbnFEApqAY.cache +1 -0
  215. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/3T/3tYOgrhu6Jc-QtTksk1je27c1yFFyH88__uTmPnVmzQ.cache +0 -0
  216. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/3Y/3Y2DZ7xDv_qrBZbzL_uVqSJSQkyaELWylRG5wuq4TSo.cache +3 -0
  217. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/3g/3gBzGjNMrSU6zeZdhzab5N0AfYpv9RP_lJyLGHd1r1A.cache +0 -0
  218. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/3n/3n6gmHOI1g4DJt9XuGDgzDijJUNOacwWX6vixpJp1m0.cache +1 -0
  219. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/48/48j50PMQkyN-EEqs74C3vwduAF5p3ZoU2BFyeKLWJwQ.cache +2 -0
  220. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/4T/4TK8H2ZOv5l6GRX9pKGidbcjhHrv2IOPj7kLM6mnUcI.cache +0 -0
  221. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/4k/4KwAO1cCXmMeZ9hMXYSY103F-sAbxVXYKkh8eWscaBQ.cache +1 -0
  222. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/51/51JGVzrJiL2qXxK7Le17gH2U049K6DJiOmSuw2KUFqU.cache +0 -0
  223. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/5S/5SoskmnXxIjXP9IUDcKZcuySE7OMhrqFDvagDJK6-LY.cache +4 -2
  224. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/5X/5Xd_zvJtYRy5iexHNPxRu2a3-b_amRfrs5UQcjgkAIs.cache +0 -0
  225. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/5n/5ngnzm-TZujRQkVBtykH5V_eycxHHhuv_0CvBkkAyC0.cache +1 -0
  226. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/65/65Dw-jfE23l-NsgFy_ikmN3fsYZtXGyQFElKJ6CtTwY.cache +2 -0
  227. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/66/66Pyt42L0DKf4-I5Wi9BO6iRaOCIdq6UFN63b5KYye4.cache +2 -0
  228. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/6D/6DD91MTznnsNSd4SUenuDllr706JCyKZlfBdvZUM5E8.cache +0 -0
  229. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/6D/6DampjY45G5h7T0gPDJID9gSdkE8iEyR5WnPiQ-N4rE.cache +1 -0
  230. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/6E/6EZcRXt4622CWebnq99t3lR1wi8tUE47qKqaXkxwyVc.cache +0 -0
  231. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/6H/6HXKjjwL4rXahbzhp_fb4WpXRJlQ5-OwsashunCj7Fg.cache +0 -0
  232. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/6H/6Hss0jca8v0ZoMPgoocyddK0IBshtQpajqtgfxfE9po.cache +1 -0
  233. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/6L/6LwqgOE2U7pkaobNBhNVwefaLVbcWMsy2fSJuyDxESc.cache +0 -0
  234. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/6R/6RqrovEpXWM6eHoOEEzy35xNnIn02fceTS6WwdTX1-c.cache +0 -0
  235. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/6_/6_op6QDvRtWHi-X0-2QRnbyx9vNQLpP0yCGS-NJMyCk.cache +1 -0
  236. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/6o/6oy8JjiiUV0XKSwHxRmGEt_RRM3cEpI0d_Py4BYy0eU.cache +1 -0
  237. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/6x/6xHHntgjhQu5m83-rotqoFaHrq1t8BybIu5Rk9coomU.cache +1 -0
  238. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7-/7-3kBpCdLdA0QQptjKsdiRP9yBleofncrZ07WEMfX2I.cache +1 -0
  239. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/73/73jCRNtac0UPSCiBM29HwDEQR1yVIASHUtUx4gfEzpE.cache +1 -0
  240. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7B/7BX4zIZDBgAJubV9q87IxLFv0SstfUmIAUg_RLWRSUM.cache +1 -0
  241. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7B/7Bag5YPHtFv-V5DyVlpuGCA2yf1-qXIUvWy2wmfa1Gk.cache +0 -0
  242. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7E/7eHrfKgLVmYWz2xFaAoO7pcrdCL9f7_Fn_ipLOSpIo8.cache +0 -0
  243. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7E/7eQ046mfLHLOgouUAyn4fDOLY5FNZEWJDaFC535P2y8.cache +0 -0
  244. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7g/7GLWXEjYfnRyjLd6kqu9uwiHeo61jI_j3QYb7OMnMIk.cache +0 -0
  245. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7n/7nw1D-UPVYvqMNIsuweZuNAHYR19zlpOgbDBV4gWfnM.cache +0 -0
  246. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7q/7QMjEioJWgQWIqDCHV_Pjbmltv6YWWC3qfPqMShBwwM.cache +2 -0
  247. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7r/7RRjes3We5MEHW6cEMVVaBMLFv_hsa_I7pUAnY2TpbM.cache +1 -0
  248. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7y/7yPlEIo0JNrkrLM5ZEeptkBZhFPOHxKSh3LbP22bbDM.cache +1 -0
  249. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7y/7yu5_azZlWjsNcDyWGg1lumtfrwzpennlh_3hyk4IdI.cache +1 -0
  250. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/8-/8-NlEJYzcYmw5KeJHfNNif4G_DXiVCLAlpXIgaZCVEk.cache +1 -0
  251. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/81/81s_4ZGfJFbfbj-Ss6O_2asiGDdBYn8XBrt1olgAQPg.cache +3 -0
  252. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/83/83NpiuMG2eueu6xpHUQIneUvue_pph4wgrrn0-27up8.cache +1 -0
  253. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/84/849u9h1xEghlqfNKRG8m9hbI0NIg-Q66WTSU_5L6XVU.cache +1 -0
  254. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/85/85v6Qm5MRQ798rxH5r-ersSTdex_v-ONUoVobkQqXTA.cache +1 -0
  255. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/8F/8FdrIXTutzrEDFkOS7__hzV9v2eYcGIVXP65Emuz928.cache +1 -0
  256. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/8H/8H0u8mvEtePzSSFKdAgMsf84N3BMXS61OheTmtxAtik.cache +1 -0
  257. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/8P/8Ppr13gHVWm-E6Xn64gf1hJUmn6sQzdhiNUHBySEZAE.cache +0 -0
  258. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/8S/8sCk-aof9PURFSuYlPFNLuxUwt2KKr8s6rN6qRH9eOU.cache +1 -0
  259. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/8i/8imXPKwoyU-ThZg0Yq3HKNzbyUFwHQA8HUq0GPJ9MfQ.cache +0 -0
  260. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/8j/8JpvmENDxWGs38igY9562qLE5IzFKpTCqEeGzOQ6MQ4.cache +1 -0
  261. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/8n/8naxpLW0q1vVuBubCUle-ld48aO-XnE98WMbWiayHy8.cache +0 -0
  262. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/8q/8qEGizxz2CjCt12AIOcvS-Es8zLpAv4u0fLBmfMKdZ0.cache +1 -0
  263. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/94/94prbCHkk3YWqr97txUO5hiKZnGlk5CYrj6cmFCvANY.cache +1 -0
  264. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/9H/9HnWl-m36MuuQGDFClFHPWm_Xo1VkqT-JtGeVN51abs.cache +0 -0
  265. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/9f/9FtoJ7uIf1iZP1cEAjsYJ9yjojMDBx3VPuzXm_SO0Jk.cache +2 -0
  266. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/9v/9vtOiHbYfEItugmLWUVEbPA-BnmrOoP9U2KimBNjWc8.cache +0 -0
  267. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/9w/9wdsDf_RAex7EUNaUHoEwEeg4vKx82v48ZkVSLBIv0Q.cache +0 -0
  268. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/A2/A2naC_C_nQPFcaZtJPuVfNC6fYTaLZlFP3Zt38AnLgE.cache +0 -0
  269. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/AA/AaE8Ulr4vaJo5yRKkEqlbLTgcRmWsTGZdBUtNTh0xy4.cache +0 -0
  270. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/AA/aACaThg1NMRjnhyBGFbE_WEdFpkmhG9xfianpavvsJ0.cache +0 -0
  271. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/AA/aanPUAW7ivYeVpOFA7UrK3_WFg-VU_pDrNAuIr-P0kY.cache +1 -0
  272. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/AC/acV7hSCzZ_mLK28G3Hkk5KbAk-YlJnGHFRGzQhB_eQs.cache +1 -0
  273. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/AX/AxjMjVac5hNjei3bIkmtno9ouPGu7QA6dPWGyen1Kw0.cache +1 -0
  274. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/AZ/AzMMVl0JBgTx18V8Z_nWP16FkT3WlZ2jjngFB8t97w0.cache +0 -0
  275. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/A_/A_0LIVgs8czJyVNTP8Tem6BSKTDfES3YPvzVCXshuKo.cache +2 -0
  276. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Af/aF2Wqe0ip8MysXa8P9Y50YF9-BT79Q0mKECK9AOJk_U.cache +0 -0
  277. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ag/agGFRHAImQxQ1oGFsmAgSeJHllLC0fe-FIBCuFWqVYs.cache +0 -0
  278. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ao/aoO8i0txe1jS1QdHyttXFFJ9jyHt1P95NtZm8usTOFw.cache +0 -0
  279. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Aq/AqRAu7URKh2KZf9ExhfsGARfhV1ysE1vI9UzZoaT_t0.cache +0 -0
  280. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/B-/B-teNZUNBD1Wu3aHrFOfESYIZeJtE2r9j_MRSxX9xq8.cache +0 -0
  281. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/BL/BLvEuwhziD9WF6mqit92GCEP-H3cSPWn2jB8s-hW4oU.cache +1 -0
  282. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Bi/BiazmS8uEj0bkmkpzyc01-S9G3Q9NT11o74IGuWouqY.cache +0 -0
  283. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Bp/BPsCJVLUGGzCbv_oMY-deFOVXSRbflTGdmRn_SHttpk.cache +1 -0
  284. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Bp/bpJQe7K_ssJJ0wIwIEOFIF8bpmqiErsmichBtb1b5fs.cache +0 -0
  285. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/CN/CnPsCSdz557EyVKZJ3Bcn0-W63AKeR57R9m3oCzPN1U.cache +0 -0
  286. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/CX/CX-d7NZpNvfE6tEMJyEhlX7dqz4FMT9L0SOzhI2NAJU.cache +1 -0
  287. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/CY/cYqN4W0zIJZZNn7IKGGUldAYQHjunV3YE9CtfokaJDA.cache +1 -0
  288. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ca/CAmJ6AT0nlMmM4T1_KYazFj-rpfWBUdeFmbwV2GnmyM.cache +1 -0
  289. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Co/COB3hB52lvDgjODsoAe_vE-ppYDJuKRcvhe0-wEmoNw.cache +1 -0
  290. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/DC/DCcvKMD_h3e-Vzf2zCjOfvbxlEuAKMbyfIPm_6kf00A.cache +0 -0
  291. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/DC/DCxBHBrlIZKaP2aAiZEs4mv2rYQdL4kTgCJWNUfot0g.cache +1 -0
  292. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/DC/dcYsSy4Wnywrjzt-utFUdx8ZbxriF6Rq2fSNEWy-jwk.cache +0 -0
  293. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/DI/DIzl_ulhyWytAc8qLp0PJnUYXsODu_KqGAwRivXg-tM.cache +1 -0
  294. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/DI/dIpYkxKGwfeNcH49tAELikPYWoMLWDblgDPZrZohTKk.cache +0 -0
  295. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/DR/DRRGv13UMIsvbHPymADhIh6NexFGm-0Unzois7ipMHs.cache +0 -0
  296. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Dk/DKxGoiTsfgYafLG8-3nYvpE1AQG1Wr-DEInTtxy_pac.cache +0 -0
  297. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Dt/dTSbsKJbPCg7049QmzT7DrQGIFWJ8OyX6soLnq3NNIs.cache +0 -0
  298. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/E7/E795TBj2gUWLvU6eFEO730yebF_TRmer360KtA1IaSE.cache +1 -0
  299. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/EB/EbvEt5RlgKfbOkOpdIhzZzVj3ubMMVbb9heWMOO898c.cache +1 -0
  300. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/EF/EfgTqS0IKc-bHZt9gMpjxzPlaX_j3vCb3Cy5tI1NJ48.cache +1 -0
  301. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/EI/eizHARURcYimno9EqXQCfE5uBogovs9YvAray-9aJ_s.cache +1 -0
  302. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/EL/elwElMb-mcXZc-F8ywKiOJ2w7OwT8TYePwMweydivtg.cache +1 -0
  303. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/EV/EVk9r_SHGAaOk2-SnAV3cDaCenm_fw-tO8eSyB5-0L0.cache +0 -0
  304. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/EV/EVq5Eh4xblrZ1OcUeWrS7SjY_8Pt7sREakKsTwvv_zQ.cache +1 -0
  305. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ee/EE-_09tBh1XBduxPBD510S2KnGSA16x6bd2InccaiO4.cache +0 -0
  306. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ee/EeLXp8NiOm0IjsuCUpAwpVS8Yna-_rx3kVcm5Cr6B98.cache +0 -0
  307. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ee/EeWPQAZKA-RsXTs-H9KsmtwVz7tg0xluXkvERVeZ1E4.cache +1 -0
  308. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/F-/F-ZSUMdCMRS9A8TqGVH2BSnlRMQ-Cb2QeU8HqzWB0TA.cache +0 -0
  309. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/FA/FAPqrRAbwzvcWicChneZNignbRYJlX4ri3SlSrL3TRQ.cache +1 -0
  310. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/FW/fWweh0a6PnxU3NToR3Fbx5BM8A7yLwShFxLgbIU09fk.cache +1 -0
  311. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Fh/FHboAGQC5LPUbtZ_at2O8HVJK2vVo5cISFutffg2hl4.cache +1 -0
  312. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Fh/fhtG_7jGNHVhHyYHWsXNhowKDdjkkXB7F5PebIlfUUI.cache +1 -0
  313. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Fn/fnynw8poHi8_TZdWcPGdPMFITRVU3jF0j_FR5KNRiUw.cache +1 -0
  314. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Fp/FpCo54zllOiPc998GHQwE8U2MjoN0jzWqeLOo3kkFJc.cache +0 -0
  315. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Fq/FQB0AE3Gq0jBhxR_xGnBgZxvzt6VZBO4hK8fWI6C_Rs.cache +1 -0
  316. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Fq/fQkVPTmjEwxoIlo-_kiJ3-sGlh9N9u3wdgWHHkO0Pu4.cache +2 -0
  317. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/GG/GG6XbCANzKhq5tGWEz1Gp6slq7zgzaNNDdtU_MUMVGU.cache +0 -0
  318. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/GV/GvcV3MfbozMQ2qQa0w4Y83i5-nsViOgSTVGag-mPDgc.cache +0 -0
  319. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/GV/gV6XBKH2XufUgZM74MB0yfMwcAAjLF3F6bOsfFiaCVc.cache +1 -0
  320. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/GV/gvOnaWS8TpX6vX_6EcxQtKVJMFz83V4HKD_efMnL3UA.cache +2 -0
  321. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Gm/GmjfIcX5tCjD97EdnctNrNy6dFeCuno1LvMG5yVPdTI.cache +1 -0
  322. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Gm/gMeSFXcqv-RwnNRz_4-VjE6lfdhPoDCZBkx4WtdpvLs.cache +0 -0
  323. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Go/go6kmD_K7yl0fI6QBjfyB-gnjTM21-hqtDfMFk3f2L0.cache +1 -0
  324. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/H1/h1-dOyqJlCG7rnr4KRFEzPFkj23-9JUKflD9b76kGQc.cache +1 -0
  325. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/HC/HCDOUd7-S45aJ_PjVAC_Vmjyud3i1aQv4cE3t9_Z3Dw.cache +0 -0
  326. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/HL/HLOL9dTmBgI287cuyWMr1tkCqyj3til4Af3SUmCdlRY.cache +1 -0
  327. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/HL/HlhMQkorznIlBQxImlInJr1xQghDOj95W4zgzrGrVc0.cache +0 -0
  328. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/He/HEkIjv-UgfX8S7tXYouf_Qkp_ku33PQjaZB-T6LGfJ8.cache +1 -0
  329. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Hg/hgWeOW3oD-TCF0Fzm8vVZ6rvyJncxQcxlFBFs78LJl0.cache +0 -0
  330. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Hh/HhZuRHbzOm2Dj-nQ-Nd31VGN5JvxMB9UgI4q7y18du8.cache +1 -0
  331. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Hh/hhRgKZcT-RLfAIzVxrkZIzwHtWjcAGxl1V0IRFTIL18.cache +0 -0
  332. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ht/HTwI8_1CKbZGoNHim83bpVTZPIOiVJbQ_4NdzyWBrrE.cache +1 -0
  333. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Hu/hu5VPLfwaJiQn0eFOQZZ-K_195qF3MWER_k94OqSPKQ.cache +0 -0
  334. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/I2/I21PtLp4YczhTTKNeWWOWVeOExD8hPZq3fOmHcB-y20.cache +0 -0
  335. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/IB/IB3m6eFv-1_CsoLUzYk2T05lSmiH8aF4FWaZJIR8Avs.cache +0 -0
  336. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/IB/IbkuXqUUlBKllwszmseDsIJqG6pIty7mfsRVWGoepto.cache +0 -0
  337. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/IB/iB2JVtMyiv1veclw5909bIzyMzUCNUB22z_soqFXkgE.cache +0 -0
  338. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/IB/ibUULmrfgMx3gsyNXfuFFdUBkas0bsJrE5mCNnCLEdw.cache +2 -0
  339. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/IS/iSRqcBJZ0mTZHbsO7uh7JvT99JWJSNqTW6jSURjHTXM.cache +0 -0
  340. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ia/iABYraa5KiISIiCassajX5VQCh5qqbZ9pyQ85-tuEpQ.cache +1 -0
  341. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Il/ILq4rb_KdvzmUx96Wipqrlt0EgcLgbmkEkZ9n_wfbL0.cache +1 -0
  342. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Im/ImRcfPf1SpcHjeMFiH8mngC3yWG6n8aimUC4dXF6gNc.cache +1 -0
  343. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/In/iNHTBx8I6cFZQiT6bPMCE1hlLyQvevzicyzw275hDIQ.cache +0 -0
  344. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Iv/Iv1-xvN-U53M1paHZzagwfh-WETlw0zZHlGVvEjGBlw.cache +1 -0
  345. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/JH/JhkvXutmWDPfhlLTjHWvCTW5pitdD-6eCJBr3-ug7s4.cache +2 -0
  346. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/JQ/JQGwy1mVWmtPaVFwoekNWVpYZWTmKv2_DJzxi1TkH04.cache +1 -0
  347. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/JU/JUWUDtRtvVQxJzNp1FHd35_S2jpQTrAtF3b8hxSVl24.cache +0 -0
  348. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/JU/JuX2KidmxSUGsG967IGyiijFPTE-ueDY3rA26d53T2I.cache +1 -0
  349. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Jb/Jb42iRRs2Nj2HuZVvh2TzyeYRCD144YFtU16lXU4RRk.cache +1 -0
  350. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Jc/JCdPq5UVatagsCjBAsqUnwQraczzMlLzR46K0mpkmoE.cache +0 -0
  351. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Jd/JD7mXMrOuNPsyoH76Uz_SHmE5s9U1DODVcFNogvrNNo.cache +1 -0
  352. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Jg/jgEcQY60fxs_uivWIhdM3SCu9dGJ626RdadrWrlvJbY.cache +1 -0
  353. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Jg/jgXkJroZL6QMeuG36k7jSO97RkuQDs4-RaBiIS679T4.cache +1 -0
  354. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Jw/Jwm_DpciG9DYQO02yQYDAiH_laWPEtc0GigwSRbs89M.cache +1 -0
  355. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Jz/JZ7MfxlTn4gDU1Y_h9DG9H-mNWtpQ7fZ9Rp7_COGaSQ.cache +1 -0
  356. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/K2/K2CQfKwDkV6ilZpBi0AjwR6BVvFaJwwTyWd6YCFO3-4.cache +2 -0
  357. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/KH/kHV8d0Dh19Z8jmJEIB9Gbemrl5RC4g6oCb4S-ZW-JNM.cache +0 -0
  358. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/KK/KKSLAvYg67DWRvcv14fGzBl2gOpI5lD7l2cGd1Y5EtQ.cache +2 -0
  359. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/K_/K_0e6d4BqCb9_TIsZ80udhOzMwbZV3MJZ-wLYQ9b-zA.cache +0 -0
  360. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Kb/kbTbXhmmiITH5yWvbDmp1UIyYs3l5BE7LLXD-y4RRLU.cache +1 -0
  361. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Kf/KFNNmLd7nbN1NAdUWe5EfE3FyBTW9U26y_S0h2yYXeQ.cache +0 -0
  362. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Kf/kf6SRy-KUA0t6kJu2RwOQ5GR0w8NS7CPluL22MuyFmw.cache +1 -0
  363. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/L8/L8QcUnSHck1bsnHnQgzzb5Q_th0dJYHjh3l6Z9SJRp4.cache +3 -0
  364. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/LG/lGHUO9F6HXhuXVPXAx2mDQgCSKOY5U_JIvJ9Ew3c1S0.cache +0 -0
  365. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/LK/lk8eFzlwLJYdN_WBJ7R8lJ9U6RHx8uD3LzWWsWjGTjk.cache +0 -0
  366. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/LS/Lswvs0k0V41it5ZYPUYtD0IeFguLLfayH3BDwtGRBlY.cache +2 -0
  367. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/LT/LTBiTPz2_oQosGvHINp1LlvIoEQryhIWsFQokpRiDR8.cache +1 -0
  368. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/L_/L_L9tLwJtqA92k-VzHQOkejSdQ3MmvGsCqwuA9crd1E.cache +0 -0
  369. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/L_/l_xX9xTgWzqagV5M5m9-wq5Ry0gtQ79FIQMoVhRaJqA.cache +1 -0
  370. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Lq/LQOhlikUC9V4SavXs0QYf2ITRRnsdDL_kds32codKO4.cache +1 -0
  371. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/MN/mNVjyZMlSZFvs174p659xlxrkmu4LOwIxQzfrxFgUhQ.cache +0 -0
  372. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/MR/MRdI3NUaMFhcP6Xwj19LSNJj4g80mLHvQr9VGGr9sm0.cache +1 -0
  373. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Mb/MBd3v4EwZo4oKQkUVWFaZqUvyif21rbaR3bszcioA3I.cache +1 -0
  374. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/NE/NEGO3q-KTt3Fcbh5Fw70DtMqhNdopgbMMPhg1tOhBUY.cache +1 -0
  375. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/NI/Ni-vXeMbi-D-izi3E8LsQ8G8bXvhNZ62EvrbQ3PCdsE.cache +0 -0
  376. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/NK/NK41SJLEjW4q31yBo_0MwEU9tW2s-m93olIf7BFVj-Q.cache +1 -0
  377. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/NL/nlHhybo0KkuSUq1IzJsV0WK6UsBr4UIzAuy1X35mJn0.cache +1 -0
  378. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/NQ/nQ-h6Iy-fPeuTUPVEVa8aPNqEzgkGhgtqvzRR1VnhrI.cache +0 -0
  379. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Nc/nCRZH9EbNXgdscW2kPSAutiLW4mChhNE1zV5AJKvnaE.cache +0 -0
  380. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Nd/NddS3BcOLbKMVWUYYAJ9bIAkazLXL3UOvloWjHa-yV4.cache +0 -0
  381. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/No/Nopqi-0vK7gmk7Cbtz9rk2l9AzRKlUnVSnxTC8uFm8I.cache +1 -0
  382. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Nr/NRyn--vl1ZuO7N1PTmSQLr-h2GVErQLtnx8SLz_yJrU.cache +1 -0
  383. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ns/ns23eB7eKkgiJDmzmXfVV0SUJx05gHajfnVRVWSOhEs.cache +1 -0
  384. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Nt/NTj1EFK4pYuw-VysEk-FBXhYQMCWffa62qi4_bDnTZc.cache +1 -0
  385. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/OQ/OqKFPAuJXRalpHfMOI3P0h47ZCHT1Ln8NFWzF2Ddilg.cache +1 -0
  386. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ot/OtYjWCjnGDpi74Rlx0xAimC5a_Oxb6HkAa3JTFNu_v0.cache +2 -0
  387. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/P6/P6M7Ggggpnv5fYZQPR_cz1tIeDt-g7XeWUghFm3QlOQ.cache +1 -0
  388. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/P6/P6SfczaBQ6uBGXWx5DJw98oBPH_nxo6_XZJpYUhYJeM.cache +1 -0
  389. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/PZ/pZloq1LuUvcQ3UJX5rJpHasrGBvKzpiqoiQ78AZkuX0.cache +1 -0
  390. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Pd/pD06MGVvjnFTsvFikZQB75g7WHptt-6xICig2tDXbA8.cache +1 -0
  391. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Pd/pDP7o8UQaLu4jye0h4nXKnNNd3NBFqAbs_9HxFSdyjs.cache +0 -0
  392. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Pd/pdXOUtJvqrtNqv1opDtseB_qJthVpFqQCpZeNBStlWM.cache +1 -0
  393. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Pf/PFv8rgD4J_SnnFav3za_MjkrcJgAX1k-_7mNHfndeps.cache +2 -0
  394. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ph/pHRMns0B47rxUtXsQDEv-v_0HskZ_tu8CBLcp1vzRrs.cache +0 -0
  395. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ph/phatA7vmwt3qGuUjOjTzcTRopmqyqf9vejQ_H7rAcEI.cache +1 -0
  396. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/QA/Qa4VoIg2r0wQqtNXhpdeTYkQ_UEXOHJjXpqkuVDYpWI.cache +0 -0
  397. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/QH/QHheL8KFRo1mZ5R-_Lm_emD91lw8pJ0KVXR4lPBNty0.cache +1 -0
  398. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Qc/qcG1r_pYdg0RFMUNsCiuW3edFDLZcU6xbSjtGgC0oxI.cache +1 -0
  399. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Qw/qWjVhWcW93D0XBSixUZsJv9_Om0Qdj-oZsvKH9uOKQU.cache +1 -0
  400. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Qz/QZK7Vf5ipY9UEEZMMc3rljeQJiHUoNUXaa0Xo7jprKI.cache +0 -0
  401. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Qz/qZeQVQQ5_Y6qmrfZ6TbiqwT7w2XXANw5LJroIUTPljo.cache +0 -0
  402. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/R2/R2iQbSw2uLmN_hLgt9tKTx5UHYC6oySnCPof6oy2Rv4.cache +1 -0
  403. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/R4/r4_eiSZDchcO2iAFXWiQObbeNAHN563Hy2BJ_0RctfE.cache +1 -0
  404. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/RJ/rJSQw7cvdQhIfMzclTBkjJjZxWWT1muMnyYs2oEDUVc.cache +0 -0
  405. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ry/RYAKvdzW5zyCn9nUcd1RUXflUMhOhYBGR1z-y3qsNtk.cache +0 -0
  406. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ry/RYL94zMDka4owN86x7eQ77reLK6kkchV6uL_XRWBz0g.cache +0 -0
  407. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/S5/S5sb1SbWwNWksfTQD-JC7cny4JOlggogs7usq7jCo-U.cache +0 -0
  408. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/SF/sfgjpXFGCV-vGOfhpzDjhPJxaWuDZHSqnvjLMqJaceg.cache +0 -0
  409. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/SV/SVT1Bgw3HcbFve7feeSnRkTk0AmjG7YbjKKoX3vmfOs.cache +0 -0
  410. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/SY/SYNYnFWkua_jjQSoNA4e_L1iOh1YOAEyaud1-swERF4.cache +0 -0
  411. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Sd/sDWQD-12FCQjnDjTaFukio4vsfpVEwalsruW0ghAHs0.cache +0 -0
  412. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Se/se2Z5voKr2KNrZRKwMmtqKQyItCbx-d2JI9IZ1dL4hw.cache +1 -0
  413. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Si/SiQvWtxoX-AfRxKVHqNllAWycrhLpPHfHxlXo-CKCek.cache +0 -0
  414. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Sj/SjoDEtlxEaWS_45JbtRqWmpaGHORhFnYHPSLGm5qszc.cache +1 -0
  415. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/St/sT74YR_3p0jg5mNqhcPqc3-FtcXFo-q3BtpW5afzbZc.cache +1 -0
  416. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/T-/T-vxXIC531Ue1FJZCrCqKVbX1zVzmkzRJsLdnVBdpB0.cache +1 -0
  417. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/TQ/tQ5plRzFRz3OU2Xm6e0e93cXr3HQgh30hfbc5G89b8s.cache +1 -0
  418. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/TT/TTBUjg9gVHZSc1rAybB4YTXs8p_Vv3Ni5ZrcRXzPjo4.cache +1 -0
  419. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Te/TenXYc8J-ZE53CMXxDmrSqJC4qFZhXZFC8gZ9jDKMLI.cache +1 -0
  420. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Th/THukkwRjiDdxIPykIf5BOEV2t3m-SdppwTefxNSlTNc.cache +0 -0
  421. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Th/THw0ACpnrS0OPt6LZB3o0iRyA2C-FgCCzlrt5SC9-X0.cache +1 -0
  422. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/U5/U52JV614Af4s6OkXboaDKbEZ3_XvUH8S-tK_-owzx14.cache +1 -0
  423. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/U6/U60QtpkXYJelm4Xqsqk9aU2pnS5SRVt2ExRpg5NoMXw.cache +2 -0
  424. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/U9/U9BaFzg_DCJW0DPbUQ_cBlV81rEO4lh34da9OeWkCJM.cache +1 -0
  425. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/UB/UBpvEBYA3LAHchJWxJIEDPtMIGlvpH5wt-HiAbHGmuM.cache +1 -0
  426. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/UB/UBrzEHCv7TaouCQcgoh4zqe2W--VhlDIbqsOB56BaGg.cache +1 -0
  427. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/UY/uYECgbvVoMGbaofA-5m79Ew5zKEDQFaNQvWLWZhDOx4.cache +1 -0
  428. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Um/umha6S869wxDhOEfa20XNaje_ImliMTTEBANIVU7TKU.cache +1 -0
  429. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/V3/V3LcgNagWW6tfqMHf1h3ZYOFok0mEOBkYJntTV1_X-I.cache +1 -0
  430. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/VA/VAnSbOzrGQZCywd6Lj5Wser1tKh2yc4uy9k88skk2bY.cache +1 -0
  431. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/VS/Vsllivq0Q88z0teNOBeOO9rsxYFl9ajCMNtNyFfXcFo.cache +2 -0
  432. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ve/VEJi6fMK8p5cMGz2zE7_3zVLV8WbMAaK3vUHwxBS5WY.cache +1 -0
  433. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ve/VeAD3HoL_fui2sKVY85eGyDlXGjdZnCcWcMoQeMXv6o.cache +2 -0
  434. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Vf/VfoBsxc7xIPKk_BuKOaTRnvQfdlgG6-lKMkdaaDMM-c.cache +1 -0
  435. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Vh/VhTy8HPXjC8FeJSDxDsk9AU1RSffCygTZv-WWNO04eI.cache +1 -0
  436. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/W2/W2lP-mg5rR5pDkLsae4XmTI9TJZ15ja-dNzyzD2BJJ8.cache +1 -0
  437. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Wf/WfTMe8FbKjnSlERwNm2yb-m6WfE3QQdF0gFQUFTK3GU.cache +2 -0
  438. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Wk/wKW4TzhpUyahpgSaT6E7rFbjEILJVnbgPvkFTrNMDLo.cache +1 -0
  439. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Wo/WohHI1TlYvR3Lx5TVv_-tBFI7Ywi3wfRNO_JSKncQdc.cache +3 -0
  440. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ws/wSBOoW4m3MVMGrR_L43DgsHH-mK8gi7m7pzYdj7lQz8.cache +1 -0
  441. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/X5/X5H4fL7BED201to28JvhPao6Mem0idQFo9Tz9h_oTns.cache +1 -0
  442. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/XN/XneWZ4kf9BLCrBJNNfvBdNNZ4wcKQ4K_-vE0iDb9C6A.cache +0 -0
  443. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/XT/XT0iXRFJhyp0JDvSkIMsdoplgECRtVr0amFQRx_yXWw.cache +0 -0
  444. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/XV/XVuiTVT7nI4xSUp7SL6JYwvM2g8J6uszBK-kpDCTUx0.cache +0 -0
  445. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/XY/XYF9xJq1xR4RkbCxrvJ-fJ-ISucJ9QXm_tYL5GajLx4.cache +1 -0
  446. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/X_/x_diIp-hmyHxW8sim3h-2FDzwgrN81ycnz-ep9n5AJw.cache +0 -0
  447. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Xa/Xa3jdOdIePqZoHRh7YXtWe7heS37Y7fTRzIi32YwlDA.cache +0 -0
  448. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Xp/xPt7xZmPVDf0jjx4xVNLJ5NnYlmjF1KHrLTMz6nd15E.cache +0 -0
  449. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Xr/xrct0gSZoeJl3EBbn9y_WI46i4ezJq1_ZZBjGBRdTjs.cache +0 -0
  450. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Y9/Y9a4TFNyLMXlDXpb3nkqOcgka2GAyKVlTRxJrozS3gs.cache +1 -0
  451. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Yj/YjG0sf5z80Kfu-ncVIHYGPDKQuPy_4icDaXoAQJuWOs.cache +1 -0
  452. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Yj/yJM78kPIoDnYdahkL3tirGqQ4Q0ojzo8Zg4ZbfZCDyA.cache +1 -0
  453. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Yr/YR89WJNKwIpHzzMyaH2NOwXjgR18UDJNirq1XYUpk34.cache +0 -0
  454. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Yr/Yrole_QK3LfbT6CuIyVda6vaFe5pyugLt3jdTGWPBok.cache +1 -0
  455. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Yz/yzsTrEymsZ-hC77T9Gslr9uWyNo82Mqm2tyIoYxa5s4.cache +0 -0
  456. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ZC/ZCejQ6-OeGo4wnwX5vCnX6TpzisA1TEpihaOU8PIZVE.cache +0 -0
  457. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ZO/ZOiQtMUKMWaoRBqshZsnwxd8Z4VnsdcSAl74Kb3W64Y.cache +1 -0
  458. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Zl/ZLrEvnDLzAwgeAaLam5F5ZjMM5mH8FdZLQsSmpgERxI.cache +1 -0
  459. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Zp/zP1F4jTBMq3F0u_u_DCCe38pSfKjB1zTZ6QLnK_YzdU.cache +2 -0
  460. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Zq/ZqXSuA2BohSMyFRaLxS3EN7E6cVrRRelY7xbum-fwLo.cache +0 -0
  461. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/_B/_b5kNKE5vaodv_taIelUvfuFXNzgaQIx1TdnJ3kPcqQ.cache +1 -0
  462. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/_R/_RsFKD4tn-hsV2x-oiG5hL-tCd8MKpWkouqF9Xpr7DM.cache +2 -0
  463. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/_T/_TpnpDAvvLhoe0uDU31uQntmTt_WvBbGVYpZPyobsiY.cache +1 -0
  464. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/_X/_X0t25Y-9nhHkBADq8fdHZq02M03m7E1ccYhG67z1Kw.cache +1 -0
  465. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/_i/_iRWRpffrzml1nuP6uybSC0B3_iy_bqKLiOkWxX7lQc.cache +0 -0
  466. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/_k/_k360maJuLP_zRQkp1F384Kgt9Y7TS1AKF5cAkL5CCU.cache +0 -0
  467. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/_z/_zyxJILnoZnU5ZBeF2s5R7DFH5h3RLW9aiOJy0utQGE.cache +1 -0
  468. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/aB/ABnBHVwtkQ7V0p2MU0wJNjdhAdKnaN8PWir11DlAJog.cache +1 -0
  469. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/aR/arcitL77f2uei2m5U2kkDqYFbGBA5-h9gLabnmPAWRg.cache +2 -0
  470. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ad/ADDm-fOluZIKyAEdlNIwqaDIJYr4BAz-WXEnfrrIgpo.cache +1 -0
  471. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ap/apiiiJ_B-hs3zUOx-XLF6dvnbDV0D_3FAlHOo93r5qY.cache +1 -0
  472. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/at/at0F-_pygvps9kxfkDhDDxcEHXemMJJY0yS6m86sdms.cache +1 -0
  473. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/av/AvDvUYezv0Mda3guQSnyh9YW1-SjVsHgkVqO11ieJqw.cache +1 -0
  474. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/b2/b2jtsaiAo0pWMTaF1l-ncfqVMUgondPQzb5mGsYgSs8.cache +0 -0
  475. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/bF/BF9U-GaS9Z9J6pzVekXyYyXb7XldaWCnvJjEzcIuyDU.cache +0 -0
  476. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/bF/BFy4QcEBm_t1Xu8AU59asFWIgiaHspdkBkLlAgDsQjE.cache +1 -0
  477. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/bM/BMkalN_n2R4571nlP8V6nItmSIYmmnx-Lcwyc7_Ujnw.cache +1 -0
  478. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/bO/BOLWSjJOGeRLifZEhDv1JcEHlWyZCq3fd7Jb2hEPifs.cache +3 -0
  479. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/bT/bTZIGFMhYVCBcmJZHt6RH_MFii4CbYbhTb5X7nYwTpo.cache +1 -0
  480. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/bW/bWju3dPZwFByYFF1RUxJr2TnVP1ptJuGMWEKr4bfsHE.cache +0 -0
  481. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/b_/b_Itlk9QZZd7Rvf8kcA4yLP1R5Acu7jB-m1xQiSU0qE.cache +0 -0
  482. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/b_/b_lc52U5S-YKykWMx2wcYicWwj7hhsQJ7E0RiDA93mo.cache +0 -0
  483. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/bb/BBl9h69YSmVuZ6SW07KJRzwCOIkJsJr5k2zevUPf3Sc.cache +2 -0
  484. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/bd/BDhq7X_Uckv32MrJE_3wbJBQ8HMqgjqSVqb_zBGzMxM.cache +1 -0
  485. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/bg/bg323kC-fV0Pz4UdPmW86z_nq1ciRoXGbxBTPJt_0gY.cache +1 -0
  486. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/bg/bg3AqOGxvZL9yNgCU4RCorRqAnLZ07ptmPyn4Im6Gi4.cache +1 -0
  487. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/c2/C2ETKEYnFCNsxvnSoutvSgrCE8bu-adjoYFHRda2ikQ.cache +0 -0
  488. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/c5/c5WxC2QDTI4mpezzMSXzIYtWUJEtFPSKEnoNs-RAPyk.cache +2 -0
  489. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/c8/c8WQJPflc3xqLC7S_raE5mPQyEOyW_aI9ocNbN4IwzY.cache +1 -0
  490. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/cG/CGkl26v9meGQI-fsZA5RfyUnU5NGAVplsUYSoZrL_CM.cache +1 -0
  491. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/c_/C_vTiVSlDbf7x1KslJc3LIvo7e12aOT7OsSy2fOB1-g.cache +1 -0
  492. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/cc/cc6Ig6pJFJzMne0-avl02s5RINwS1-yMS2AXIfWCzwY.cache +2 -0
  493. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ch/chYZdumAh5FvNPRuUJvHPLgrnPqxYOUXbmQ0HHHXCFs.cache +0 -0
  494. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ct/cT97-yz-iFE3T3IS7h4lcmrlTFMkv5Z9vfDMt6VhAus.cache +1 -0
  495. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/cz/cZFRegdvrg9fGj3F5AJdFAOfRJQ_lZgisgxYff5pGj0.cache +1 -0
  496. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/dF/DfDnN8I02GXz0X5pJFGdb0KUb2Z_haJd_GZwnbxxtUM.cache +1 -0
  497. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/dM/Dm46ZnLL1P6DcwnCosj0_b5A6d7L5NqZON-g8siCWcA.cache +1 -0
  498. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/dd/ddjO-S87KNd6Dwfow1o8xjdIgXDNW3U5zhO3O_zz_D4.cache +1 -0
  499. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/dq/dQTi_OHgW4ZD2TXwI5pp5E4ZnLtpRcKgvqrja3t4pZs.cache +0 -0
  500. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/du/dU11d2YynGjDLQig3HfzsyauZGp6Esjkcrr_QU2L8VA.cache +0 -0
  501. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/dw/DW0_foxpc3OQVuaBz5qowzFFcvTAiq_7CokJbFjQwRI.cache +1 -0
  502. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/dz/dZVqzybEFzVWYG0e-q_5GjrqTtaWKgdyJmaRWudF83I.cache +0 -0
  503. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/eH/EhgIpmUi1I45lFS90IqNHC0t9U2BpQLmFiEDPjKqLUo.cache +0 -0
  504. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/eN/enBR22uL9Cw0oLaeZORDfU5jMN2kSskc1qFKUWtA3vs.cache +1 -0
  505. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/eR/ER_e8CoznyADUAolVu4fKUsTKcQyI3RWJtWYRaGpE4w.cache +0 -0
  506. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/eR/eRnbT8J48nRHzfjfI6YGVnuJJLtkjQxKKlpzYoWGVNM.cache +1 -0
  507. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/eT/EtUp_eDxWzpTTSVTFNTfra24blLMpHAjXwFVTlYdA7s.cache +1 -0
  508. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/eT/EtZ6OdolYLJqQSzy4ETIkeICZG4YxBstnDLqgNwubcs.cache +1 -0
  509. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/eT/eT0zw56EL4VC5czGTqux2MnCifL-9JDU5QpIsuHmpWg.cache +0 -0
  510. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/eZ/eZG-J252K4_3qXWrUK7abUlvHuzQhExZgFJKrx39XR8.cache +0 -0
  511. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/eo/EO9O3nqFf1srvZuHFQeL43sNfBKkf-wuME25EcLNbCY.cache +1 -0
  512. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/eo/EOYFg68d6Il6ybcRe_DQ87pmAT9lTqA61P92cT4jEZU.cache +0 -0
  513. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ew/ewzZh2auHwScirKMfFnAtD4JpbmrizTnZ_L8n_Yzcgk.cache +3 -0
  514. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/f7/f7tr2cbZh22SnrnuWXuwezttU2Cc4SPB8U70pEH1qhU.cache +1 -0
  515. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/fF/FfK1Vk6LrBdyUjU9yPw2Xc2yiY-z48qCpC9FWv-CzJs.cache +1 -0
  516. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/fO/fO1be1j4E-hBPed57jOg5rh70sZG_oMVBV7djG9BaYo.cache +1 -0
  517. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/fX/FxQmCMpa35R2cjfORbS2u8uEZH5iznUG5nYe_6lWyK8.cache +6 -0
  518. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/fX/fxP7gWAmyRINlUAHO2bhCCigyV3tZEAPkIntQa6sUSY.cache +2 -0
  519. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/gN/gNB8f1i0chpsZPVAfSYtncl459FBZcaAnb_mKj42PU4.cache +0 -0
  520. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/g_/g_tbOj5W096tnIGtXLTrHY4qHFH0WCpKOWHpRNN6cOg.cache +2 -0
  521. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/gd/GDnxo1haJM65qSj5McH3YZrvQe6YN4IftEFkCDLKAzU.cache +0 -0
  522. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/gp/Gp292EO7XXdZK95xoqd77huYMQF9LSYunj-0J0EeY8s.cache +1 -0
  523. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/hY/hybOV4vBQ6AhtJeBD0tA97jhyzonctjb5jjGvrFHUuM.cache +0 -0
  524. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/hd/hdqgbgewV7I0v6OyScrl92nEIJYONkJSnEaYerKeu9o.cache +0 -0
  525. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/hp/HPW3SxgW41bvNufB5DpGkmEOCSatultjPMUB4v72IfM.cache +2 -0
  526. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/i-/i-ysMCIwr9FZqhzbPu_8zTE5HJScm2Wb14NAGcAZcGk.cache +1 -0
  527. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/i1/I1bcup7H-5RFCW7Kxyylm5Ix1r9B4fFL7fodziaI_vc.cache +1 -0
  528. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/i1/i1jcLKLqy1Qd1OV-bxBkSmAfXWu_3KNtlowuN78rZzM.cache +1 -0
  529. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/iC/iCG0zKqB2TJ5sHfAMD3qD_GYEWw-OCKtzBwkErupHSU.cache +1 -0
  530. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/j-/j-Uoc9Cel4i3D42m5f0MFz2NgSHnvfe1iFTypra0SxA.cache +0 -0
  531. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/jJ/jJeqnDs-u1msCB8IL3uYF4BC_zDp3RM3Hpm78RRl-Y0.cache +1 -0
  532. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/jR/jrtKGVYjamU96Uxkr3OAwjNvE_AA-jd_Gzp_HrfHVaQ.cache +0 -0
  533. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/jS/JseJZqMsWe5rVmvDzHBAYDOSGRNPZ7mqgC8eRYPyUmo.cache +1 -0
  534. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/jS/jSjkNd91JH5N8Bhitz_56v3puk6FZCMtTUgRfgnxeEY.cache +1 -0
  535. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/k0/k0dfXJNDjw082-IJwXGAJ93W_OYhsu38aL86UlHweyk.cache +0 -0
  536. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/kJ/KjY_C8nTk1D_LgXLixNpEpSGRlI7KCVk7gkzpWnbom0.cache +3 -0
  537. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/kR/KRzktt3aDtJaMhreTqC3REZQEsrFgGBEu8Mfv-ExC1k.cache +1 -0
  538. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ka/KA4A_FIGpDkSuqyObBrNXcrho2NhwQJL0TpiFOCrCkA.cache +0 -0
  539. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/kn/kntQZk5SEg9kOcB1K14oxcugtT4PsyRyWtZwktpIOUc.cache +1 -0
  540. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ky/KYNpZH9zymKZ8Cdh4WgUgd3UNzgkW2mlxVLwi5QiWJo.cache +0 -0
  541. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/lm/lm5FT5-EUiBGt-1u8Xa-cPt2G5BxHDcV67x0C3cr1DE.cache +1 -0
  542. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/lr/lrfh7rnILOk_JqQ5cjs22yqDdkQ_9zcqg0q897VY4Z4.cache +1 -0
  543. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/lx/lx0BFpMu9Nxpd-wU4SiWIDmaTFEWGwY-PnaP0Oz3tAc.cache +0 -0
  544. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/m0/M0Fyfwy8huDGZatIbsRxJvuwmqG2x2v6W9y6TSWVRas.cache +1 -0
  545. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/m2/m20e4VPq5aod3TLE3U5QffYkk7ksccG9gy308w8jmRY.cache +0 -0
  546. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/m2/m2MkSjgxPrvKS4xZu2U9Imyg80Ic7GLWZ0CVyDES1R4.cache +2 -0
  547. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/mE/meCreQAkClyUgE1PrQMrzqEIcQrSDe_uFMQxNk5jM8k.cache +0 -0
  548. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/mL/MlXfFsgR74m_qThht9bAMfTAuwB9cZ91IWOb5fKDKgg.cache +0 -0
  549. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/mL/mLavCH63__Za_ml67ikjbUFIHXVmX3Jv9U0WTPYAF_k.cache +1 -0
  550. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/mU/mUKd0yzr-BjvB5T5p9VMN9oXR6JLtxNHp8ceDTOVQZQ.cache +2 -0
  551. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/mX/MXGxAo3mPVWfkOZs0eJ6hHepcE7KRIvhueZcfDaiQaU.cache +0 -0
  552. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/m_/m_SbwBp-4WXxEd_w8PZIGTSgDw8XvvpvLPMNWD-Mjc0.cache +1 -0
  553. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/n1/N1RmZ5gkYmYCuiO6XsFjAY0r-BcAnrbtC8kvzZTC-e8.cache +0 -0
  554. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/n7/n7uWL5SAO2zLZwwgwkW3wvrAtD937QhiFvhU7YPuqnM.cache +2 -0
  555. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/n9/n98npHaW2dtYHameCMoeDnOBuI35-NTD31vNEFolGBc.cache +1 -0
  556. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/nB/NBp-0A77PhDaQhIUbiJ2lE_txYXo4id1X1Hrx5PBlMo.cache +1 -0
  557. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/nB/nBQfUEl_UaN4QNGCTb-YoWQ8LOxcZAAjeF4y4ULprX0.cache +1 -0
  558. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/nU/nuJLUfNnrTIGvO-V16l-7GHjjOBnbj4bvAWeGENldKw.cache +0 -0
  559. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/nW/NW75zPbJ2YaHqH3-A9gXYoUWIuzgUWJF6ljl3o2h_BI.cache +3 -0
  560. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/nx/nxcApmqydE0HSnypG0BGqE4hRdzKlYUyKEtu7md3mO0.cache +1 -0
  561. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/nz/nzq6GyXiz6DftdVa2kSXRCBiQYC8Sp3fF_7Ltleo9c8.cache +6 -0
  562. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/oA/oAYv8hGRHj5VYoRej_jM7AdDQeqoXa5pbjccbIV21NY.cache +1 -0
  563. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/oB/oB4SuLFMx6i75bSURO9Rs_yhWzgf1hyz8JknOrd6ipY.cache +1 -0
  564. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/oE/oE0PdADOQz885SRwq2yb_IyNDNK4hRWgDo249Rrheao.cache +1 -0
  565. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/oL/olURSq3qrds39yFv2kUC4RZG155eMsU60dQGjGNfpqo.cache +0 -0
  566. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/oX/oXkje7YMOg37G3nkr2c7swJ6weih0r7UIqsZxSh3Pzc.cache +3 -0
  567. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ov/OvvPiTxFypTHNw_ZzRWxBzje2qVvUPSW7O5dLUKNNFw.cache +1 -0
  568. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/oz/ozK4IPJj2CBcsem3fLJx3wqcOl6mI6B91PkN0wVfkyk.cache +0 -0
  569. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/p0/P0F_55MeRaB7nm_aSk_ku1Ao8u1_8YtMUokEFWt317w.cache +0 -0
  570. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/pG/PGtG6qLlVvuUiiIYb7zqYP0GqU80xQ9-92hcqU3CW9U.cache +0 -0
  571. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/pG/PgzZwjSZUirLLK04EV6PB0LFbF-mCxP80vMt81EAwH4.cache +0 -0
  572. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/pW/pwKf4vpkA_IHT4cbgbKcz4J1nXQR22yxFLuMZ-cO51g.cache +2 -0
  573. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/pj/pjP0mIkpA4G3PFDrv04At-56_A2iEEAeyGb6DIKJlZI.cache +1 -0
  574. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ps/psYhQuWQRjifMV6EEaNj7vEbZUvjO89L9QjHLkeLUiQ.cache +1 -0
  575. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/q-/Q-LPUKreRJ3R-MKbYt-L6HGmawJKTEAIz7px_9DPM9U.cache +1 -0
  576. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/q-/Q-rX9vWrMBIEk0aAJXPdoGf6s1eCDLetCvIY4kT2vIA.cache +1 -0
  577. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/q2/q2J-uV_sHu6HHffJLXreufNefNF3TzD_qq1onG-PcB4.cache +1 -0
  578. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/q8/q8JfvYWGtgUBWDcr9PyokJqzpzA7Ty6VT0ljP-ac2EI.cache +1 -0
  579. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/qL/QlpiZbYJbhZTVE-MBJhviE3ikzip667XIYIYu_7jcLM.cache +0 -0
  580. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/qL/qLnNjap325u30KlSZu1Ewh2AgW5q5Ds2FejOHDmNyYY.cache +1 -0
  581. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/qO/Qo7wNGluLfmKFEy_zrMNAFh0iP3oj5abXbCUqhse4ns.cache +1 -0
  582. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/qU/qUYKS7sKaSdix4WrXBUS5VsdgzIcVoK0los50bGbs-s.cache +0 -0
  583. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/qX/qxsZIZAEQy24ajaqr-tEnZGyG6AEGZrugqz0BWTQ9NU.cache +0 -0
  584. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/qY/qYKeODD49cRQkLvO0_IIC8z1HeHu5nYWL6ZQfuOx3KA.cache +1 -0
  585. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/qm/qmbJeAILIsDxr7Gd2NDkqPwXIlueI9tRjU_tfAzt2zM.cache +1 -0
  586. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/r-/r-L2xo3bi9yG-1EXOwT3gRshz_Dx8F44be2G9aE3jr4.cache +1 -0
  587. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/r6/r6jsSslGA7esFCAHBw_0g8bsEj8PzIcU5E2kPwtsAgQ.cache +1 -0
  588. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/rO/rOiabAQeNsF-_Oly-1A8rq1uWBn47NnURtcfdMf9Hbk.cache +1 -0
  589. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/rl/rLZeQMCinPwe_hNWCqv30pLmKkEEXDNwJW9L0kSDSYs.cache +1 -0
  590. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/rv/rvdfUwqkR98CbQuK6PI4EAX2NdwSy0RlJ7G8bLJffTs.cache +0 -0
  591. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/s7/s7t71YGFYHnrNfFhBOJjhA5NY8pQgJ3Wrkz2X576frI.cache +0 -0
  592. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/sg/sg9sAUFWRVd278JFAnmQ-zwhUDIxIfBM21QiHUKKeN0.cache +1 -0
  593. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/sg/sgHajuyTMWE0evesAVxh3HXeubh2ATN24iy19U5Tta8.cache +1 -0
  594. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/sn/SnyJkGb5mJ8qQW0WxBrHNsK5_Z4xc9tTHugUNc0ZSBE.cache +0 -0
  595. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/tG/TgYE-c5GR2FkRjuK3BlZouNM1qlpGHOQuzbBZ23EtAM.cache +0 -0
  596. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/tG/tGRYhaOjWT_rGY4bpGQ3yCfTOoLTILFr_vA9e50wyes.cache +2 -0
  597. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/tN/TNbtHoLPDzCu6wjOhZ_93KhxgxxkQoMOw_S5DBjeGOM.cache +1 -0
  598. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/tS/tsj-29y8aK_jqKfHQcVmDcTlxDiznU-Fot74ooGWLzQ.cache +0 -0
  599. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/tY/tYwmgiIhCmSdiwtzRqrvVTMNKGcIkgyL8moVhfvOE5M.cache +2 -0
  600. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/td/tdrhnWupRkw7HRGimnurx2oARHDzHoywEwScBVlnj7o.cache +0 -0
  601. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/tr/trp9-CNdEzsshuf7acddbuP_pE5VZfXgJvGrtqdWlwU.cache +1 -0
  602. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/uL/ULiu8jD0mv4qO-Uqz-SQKn4HakP0VcokeOdK2mjD9hM.cache +1 -0
  603. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/uO/uoodIe5Q4xxYkNvjNeYfsR1mAgo9qg1VmxmN7JGB9b8.cache +0 -0
  604. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ut/uTLnMp5z_oGS98NU_v9EApwJJWjPT7FY9N_BbRn89yc.cache +1 -0
  605. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ux/UXTF5Q4uJWhGTpLUOd4x-L4SGIgJcuo8vMUpHDWeVyo.cache +0 -0
  606. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/vG/vGeLOvXhh3-9l04Dm_2rFypdbZQRW82_O0H7L4iIcnE.cache +0 -0
  607. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/vT/Vt4aBl7fi0bin42JygRwCKOHlhA_OmgkYFcfCg52rtM.cache +0 -0
  608. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/vV/VVt5wkTOk06Qf_MumJS3eowR0Z8NC6b5arG9XIoDZdo.cache +0 -0
  609. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/vl/VLZZoDo00ecOVRMMzXGXjX0BcTdLgoNebh7Fh4DWsI0.cache +1 -0
  610. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/w7/w76H48q8FkvAUtRiKJGGLInMdqcytSmuU_CC1rTzy4I.cache +0 -0
  611. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/w8/w8POhOZXkNjT_3gEGYbNc4SaECQ7FhQ3Np62AeN9EUQ.cache +1 -0
  612. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/wD/wDVHcdLoBX-CTaUk0SyK7_swSjor-_YDuUHJWkrzQK0.cache +2 -0
  613. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/wr/wrW8pDIJjJaI0FPFG3xI87NYoe-Fnb_cnMITGwbxaJU.cache +0 -0
  614. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/x0/x0lmjFgSYue8gVMpzI3AbAC4Vj8csxNFKAwPKO4X79k.cache +0 -0
  615. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/xW/xWfYBnCGimQYequP1aWsiwxMhCCNMCpDyr_z2wZgoow.cache +1 -0
  616. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/y0/y0mtTCj3N7R-OU-kW2ywb5PMi4iEtFE73wZNbmXkH18.cache +1 -0
  617. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/y1/Y1rTgRVYe63vFf2ZywlsrZT_1c8YeyNvz7QTk0pIYwI.cache +1 -0
  618. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/yN/yNM5zZVoqw7LF5C_H_ARXv4NKBsd4T1zmVJtumDSU_A.cache +1 -0
  619. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/yS/ySgnO_m2UwwEhCtJw6LGTnFik-DiobB9F2cSjYt1DZ0.cache +1 -0
  620. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/yc/YcxkLsTpBpl4o1308GVjOT_naT0Jj7z0mB492Kxde5c.cache +0 -0
  621. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/yc/yCJm1J9Y9JgeGSmOI1a9zOffwxGHyGVi2bWK_VwndlI.cache +0 -0
  622. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ye/yEeWvlERFJ9kU0_aDxYOaMIODR9aLAbah4t0CGMW4uw.cache +1 -0
  623. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/yf/Yf2j3PvCj6bTSwj4Mwgust2F54zmV7KoNVT8z3G8u5I.cache +1 -0
  624. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/yg/yGfeNUdWtv-GJ8H2RGXtqAElh5nYlCXGt7CKTZRfov4.cache +1 -0
  625. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/yk/YK0RRXRj9ccr7xyogUh88_zzxfjMPMwkj-GjEDUrG84.cache +1 -0
  626. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/yk/ykpPzw0-IXO4VFI0x40yKGckqCul2BCxZCNSq8EtE40.cache +0 -0
  627. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/yo/YoZVNxcWqvKUfPz6IVTTh0un_L-BmQh7M3JVwTcTmSE.cache +0 -0
  628. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/yq/yQIgbpBYgVv5aX7qzr0x0-UgCIiDiYv5znl0z-7MQRM.cache +1 -0
  629. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/yq/yq5YvcYa7u7WS4l3fUO_LSXJneDbXgWA60UktoDPAmA.cache +1 -0
  630. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/yt/YTgzZh7XjQSqu0gXQ8PEHsS0WshbBX4QLJ-f8GbJIEs.cache +0 -0
  631. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/yt/YTqyvxT9QtdA9duH4GG33pWS2Etw3tGei8Uhy-4JnTs.cache +0 -0
  632. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/z-/z-WNO-D-XsrvnRbZFFOqaP-d4dTexAWqSpX62V02T8M.cache +0 -0
  633. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/z3/Z3Xfm--FYapeZv_Tc3vWQ_wZ9vfqoQjJbtuegemOElc.cache +1 -0
  634. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/z5/Z5CF0a15-jFOmm87F9V6hhhajxW8n8ICVt-l_mLAjvk.cache +1 -0
  635. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/z5/Z5c2LTwvpW-38FlouS1F09W7yF5Mvbz5SvKBoeNpxCk.cache +0 -0
  636. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/z6/Z6tI-w7PxQybKX1KrvFibzLR_ebmu_wWRcv37i3xS7I.cache +0 -0
  637. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/z6/z6zlRS8G8pjeL8G4ICmf2A3y_1WQpDJ7G966urZpM58.cache +1 -0
  638. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/zH/zHca5X3ZopkmiCnUOrTkXA_y0lK3vnBhgik80AzKLxo.cache +0 -0
  639. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/zR/zR4kH1mMnlxPSolPyYnprfP1_IBQAykcn51UwG3cVyQ.cache +1 -0
  640. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/zg/zGzd4IYJWVRYgQoM-EFjq6rB7iOLwgfypRFkay1AtXM.cache +0 -0
  641. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/zx/ZXj3ZSYjnUd00wkgHLzojIeR9xYbfCaIuQJ3eg2Jf_Y.cache +2 -0
  642. data/spec/dummy/yarn.lock +13 -0
  643. data/spec/spec_helper.rb +2 -21
  644. metadata +1289 -21
  645. data/lib/assets/javascripts/sample_filter/sample_filter.js +0 -4
  646. data/lib/assets/stylesheets/sample_filter/sample_filter.css +0 -4
  647. data/spec/dummy/sample_filter_dev +0 -0
  648. data/spec/dummy/sample_filter_test +0 -0
@@ -0,0 +1,2236 @@
1
+ ;(function (window, $, undefined) { ;(function () {
2
+ var VERSION = '2.2.3',
3
+ pluginName = 'datepicker',
4
+ autoInitSelector = '.datepicker-here',
5
+ $body, $datepickersContainer,
6
+ containerBuilt = false,
7
+ baseTemplate = '' +
8
+ '<div class="datepicker">' +
9
+ '<i class="datepicker--pointer"></i>' +
10
+ '<nav class="datepicker--nav"></nav>' +
11
+ '<div class="datepicker--content"></div>' +
12
+ '</div>',
13
+ defaults = {
14
+ classes: '',
15
+ inline: false,
16
+ language: 'ru',
17
+ startDate: new Date(),
18
+ firstDay: '',
19
+ weekends: [6, 0],
20
+ dateFormat: '',
21
+ altField: '',
22
+ altFieldDateFormat: '@',
23
+ toggleSelected: true,
24
+ keyboardNav: true,
25
+
26
+ position: 'bottom left',
27
+ offset: 12,
28
+
29
+ view: 'days',
30
+ minView: 'days',
31
+
32
+ showOtherMonths: true,
33
+ selectOtherMonths: true,
34
+ moveToOtherMonthsOnSelect: true,
35
+
36
+ showOtherYears: true,
37
+ selectOtherYears: true,
38
+ moveToOtherYearsOnSelect: true,
39
+
40
+ minDate: '',
41
+ maxDate: '',
42
+ disableNavWhenOutOfRange: true,
43
+
44
+ multipleDates: false, // Boolean or Number
45
+ multipleDatesSeparator: ',',
46
+ range: false,
47
+
48
+ todayButton: false,
49
+ clearButton: false,
50
+
51
+ showEvent: 'focus',
52
+ autoClose: false,
53
+
54
+ // navigation
55
+ monthsField: 'monthsShort',
56
+ prevHtml: '<svg><path d="M 17,12 l -5,5 l 5,5"></path></svg>',
57
+ nextHtml: '<svg><path d="M 14,12 l 5,5 l -5,5"></path></svg>',
58
+ navTitles: {
59
+ days: 'MM, <i>yyyy</i>',
60
+ months: 'yyyy',
61
+ years: 'yyyy1 - yyyy2'
62
+ },
63
+
64
+ // timepicker
65
+ timepicker: false,
66
+ onlyTimepicker: false,
67
+ dateTimeSeparator: ' ',
68
+ timeFormat: '',
69
+ minHours: 0,
70
+ maxHours: 24,
71
+ minMinutes: 0,
72
+ maxMinutes: 59,
73
+ hoursStep: 1,
74
+ minutesStep: 1,
75
+
76
+ // events
77
+ onSelect: '',
78
+ onShow: '',
79
+ onHide: '',
80
+ onChangeMonth: '',
81
+ onChangeYear: '',
82
+ onChangeDecade: '',
83
+ onChangeView: '',
84
+ onRenderCell: ''
85
+ },
86
+ hotKeys = {
87
+ 'ctrlRight': [17, 39],
88
+ 'ctrlUp': [17, 38],
89
+ 'ctrlLeft': [17, 37],
90
+ 'ctrlDown': [17, 40],
91
+ 'shiftRight': [16, 39],
92
+ 'shiftUp': [16, 38],
93
+ 'shiftLeft': [16, 37],
94
+ 'shiftDown': [16, 40],
95
+ 'altUp': [18, 38],
96
+ 'altRight': [18, 39],
97
+ 'altLeft': [18, 37],
98
+ 'altDown': [18, 40],
99
+ 'ctrlShiftUp': [16, 17, 38]
100
+ },
101
+ datepicker;
102
+
103
+ var Datepicker = function (el, options) {
104
+ this.el = el;
105
+ this.$el = $(el);
106
+
107
+ this.opts = $.extend(true, {}, defaults, options, this.$el.data());
108
+
109
+ if ($body == undefined) {
110
+ $body = $('body');
111
+ }
112
+
113
+ if (!this.opts.startDate) {
114
+ this.opts.startDate = new Date();
115
+ }
116
+
117
+ if (this.el.nodeName == 'INPUT') {
118
+ this.elIsInput = true;
119
+ }
120
+
121
+ if (this.opts.altField) {
122
+ this.$altField = typeof this.opts.altField == 'string' ? $(this.opts.altField) : this.opts.altField;
123
+ }
124
+
125
+ this.inited = false;
126
+ this.visible = false;
127
+ this.silent = false; // Need to prevent unnecessary rendering
128
+
129
+ this.currentDate = this.opts.startDate;
130
+ this.currentView = this.opts.view;
131
+ this._createShortCuts();
132
+ this.selectedDates = [];
133
+ this.views = {};
134
+ this.keys = [];
135
+ this.minRange = '';
136
+ this.maxRange = '';
137
+ this._prevOnSelectValue = '';
138
+
139
+ this.init()
140
+ };
141
+
142
+ datepicker = Datepicker;
143
+
144
+ datepicker.prototype = {
145
+ VERSION: VERSION,
146
+ viewIndexes: ['days', 'months', 'years'],
147
+
148
+ init: function () {
149
+ if (!containerBuilt && !this.opts.inline && this.elIsInput) {
150
+ this._buildDatepickersContainer();
151
+ }
152
+ this._buildBaseHtml();
153
+ this._defineLocale(this.opts.language);
154
+ this._syncWithMinMaxDates();
155
+
156
+ if (this.elIsInput) {
157
+ if (!this.opts.inline) {
158
+ // Set extra classes for proper transitions
159
+ this._setPositionClasses(this.opts.position);
160
+ this._bindEvents()
161
+ }
162
+ if (this.opts.keyboardNav && !this.opts.onlyTimepicker) {
163
+ this._bindKeyboardEvents();
164
+ }
165
+ this.$datepicker.on('mousedown', this._onMouseDownDatepicker.bind(this));
166
+ this.$datepicker.on('mouseup', this._onMouseUpDatepicker.bind(this));
167
+ }
168
+
169
+ if (this.opts.classes) {
170
+ this.$datepicker.addClass(this.opts.classes)
171
+ }
172
+
173
+ if (this.opts.timepicker) {
174
+ this.timepicker = new $.fn.datepicker.Timepicker(this, this.opts);
175
+ this._bindTimepickerEvents();
176
+ }
177
+
178
+ if (this.opts.onlyTimepicker) {
179
+ this.$datepicker.addClass('-only-timepicker-');
180
+ }
181
+
182
+ this.views[this.currentView] = new $.fn.datepicker.Body(this, this.currentView, this.opts);
183
+ this.views[this.currentView].show();
184
+ this.nav = new $.fn.datepicker.Navigation(this, this.opts);
185
+ this.view = this.currentView;
186
+
187
+ this.$el.on('clickCell.adp', this._onClickCell.bind(this));
188
+ this.$datepicker.on('mouseenter', '.datepicker--cell', this._onMouseEnterCell.bind(this));
189
+ this.$datepicker.on('mouseleave', '.datepicker--cell', this._onMouseLeaveCell.bind(this));
190
+
191
+ this.inited = true;
192
+ },
193
+
194
+ _createShortCuts: function () {
195
+ this.minDate = this.opts.minDate ? this.opts.minDate : new Date(-8639999913600000);
196
+ this.maxDate = this.opts.maxDate ? this.opts.maxDate : new Date(8639999913600000);
197
+ },
198
+
199
+ _bindEvents : function () {
200
+ this.$el.on(this.opts.showEvent + '.adp', this._onShowEvent.bind(this));
201
+ this.$el.on('mouseup.adp', this._onMouseUpEl.bind(this));
202
+ this.$el.on('blur.adp', this._onBlur.bind(this));
203
+ this.$el.on('keyup.adp', this._onKeyUpGeneral.bind(this));
204
+ $(window).on('resize.adp', this._onResize.bind(this));
205
+ $('body').on('mouseup.adp', this._onMouseUpBody.bind(this));
206
+ },
207
+
208
+ _bindKeyboardEvents: function () {
209
+ this.$el.on('keydown.adp', this._onKeyDown.bind(this));
210
+ this.$el.on('keyup.adp', this._onKeyUp.bind(this));
211
+ this.$el.on('hotKey.adp', this._onHotKey.bind(this));
212
+ },
213
+
214
+ _bindTimepickerEvents: function () {
215
+ this.$el.on('timeChange.adp', this._onTimeChange.bind(this));
216
+ },
217
+
218
+ isWeekend: function (day) {
219
+ return this.opts.weekends.indexOf(day) !== -1;
220
+ },
221
+
222
+ _defineLocale: function (lang) {
223
+ if (typeof lang == 'string') {
224
+ this.loc = $.fn.datepicker.language[lang];
225
+ if (!this.loc) {
226
+ console.warn('Can\'t find language "' + lang + '" in Datepicker.language, will use "ru" instead');
227
+ this.loc = $.extend(true, {}, $.fn.datepicker.language.ru)
228
+ }
229
+
230
+ this.loc = $.extend(true, {}, $.fn.datepicker.language.ru, $.fn.datepicker.language[lang])
231
+ } else {
232
+ this.loc = $.extend(true, {}, $.fn.datepicker.language.ru, lang)
233
+ }
234
+
235
+ if (this.opts.dateFormat) {
236
+ this.loc.dateFormat = this.opts.dateFormat
237
+ }
238
+
239
+ if (this.opts.timeFormat) {
240
+ this.loc.timeFormat = this.opts.timeFormat
241
+ }
242
+
243
+ if (this.opts.firstDay !== '') {
244
+ this.loc.firstDay = this.opts.firstDay
245
+ }
246
+
247
+ if (this.opts.timepicker) {
248
+ this.loc.dateFormat = [this.loc.dateFormat, this.loc.timeFormat].join(this.opts.dateTimeSeparator);
249
+ }
250
+
251
+ if (this.opts.onlyTimepicker) {
252
+ this.loc.dateFormat = this.loc.timeFormat;
253
+ }
254
+
255
+ var boundary = this._getWordBoundaryRegExp;
256
+ if (this.loc.timeFormat.match(boundary('aa')) ||
257
+ this.loc.timeFormat.match(boundary('AA'))
258
+ ) {
259
+ this.ampm = true;
260
+ }
261
+ },
262
+
263
+ _buildDatepickersContainer: function () {
264
+ containerBuilt = true;
265
+ $body.append('<div class="datepickers-container" id="datepickers-container"></div>');
266
+ $datepickersContainer = $('#datepickers-container');
267
+ },
268
+
269
+ _buildBaseHtml: function () {
270
+ var $appendTarget,
271
+ $inline = $('<div class="datepicker-inline">');
272
+
273
+ if(this.el.nodeName == 'INPUT') {
274
+ if (!this.opts.inline) {
275
+ $appendTarget = $datepickersContainer;
276
+ } else {
277
+ $appendTarget = $inline.insertAfter(this.$el)
278
+ }
279
+ } else {
280
+ $appendTarget = $inline.appendTo(this.$el)
281
+ }
282
+
283
+ this.$datepicker = $(baseTemplate).appendTo($appendTarget);
284
+ this.$content = $('.datepicker--content', this.$datepicker);
285
+ this.$nav = $('.datepicker--nav', this.$datepicker);
286
+ },
287
+
288
+ _triggerOnChange: function () {
289
+ if (!this.selectedDates.length) {
290
+ // Prevent from triggering multiple onSelect callback with same argument (empty string) in IE10-11
291
+ if (this._prevOnSelectValue === '') return;
292
+ this._prevOnSelectValue = '';
293
+ return this.opts.onSelect('', '', this);
294
+ }
295
+
296
+ var selectedDates = this.selectedDates,
297
+ parsedSelected = datepicker.getParsedDate(selectedDates[0]),
298
+ formattedDates,
299
+ _this = this,
300
+ dates = new Date(
301
+ parsedSelected.year,
302
+ parsedSelected.month,
303
+ parsedSelected.date,
304
+ parsedSelected.hours,
305
+ parsedSelected.minutes
306
+ );
307
+
308
+ formattedDates = selectedDates.map(function (date) {
309
+ return _this.formatDate(_this.loc.dateFormat, date)
310
+ }).join(this.opts.multipleDatesSeparator);
311
+
312
+ // Create new dates array, to separate it from original selectedDates
313
+ if (this.opts.multipleDates || this.opts.range) {
314
+ dates = selectedDates.map(function(date) {
315
+ var parsedDate = datepicker.getParsedDate(date);
316
+ return new Date(
317
+ parsedDate.year,
318
+ parsedDate.month,
319
+ parsedDate.date,
320
+ parsedDate.hours,
321
+ parsedDate.minutes
322
+ );
323
+ })
324
+ }
325
+
326
+ this._prevOnSelectValue = formattedDates;
327
+ this.opts.onSelect(formattedDates, dates, this);
328
+ },
329
+
330
+ next: function () {
331
+ var d = this.parsedDate,
332
+ o = this.opts;
333
+ switch (this.view) {
334
+ case 'days':
335
+ this.date = new Date(d.year, d.month + 1, 1);
336
+ if (o.onChangeMonth) o.onChangeMonth(this.parsedDate.month, this.parsedDate.year);
337
+ break;
338
+ case 'months':
339
+ this.date = new Date(d.year + 1, d.month, 1);
340
+ if (o.onChangeYear) o.onChangeYear(this.parsedDate.year);
341
+ break;
342
+ case 'years':
343
+ this.date = new Date(d.year + 10, 0, 1);
344
+ if (o.onChangeDecade) o.onChangeDecade(this.curDecade);
345
+ break;
346
+ }
347
+ },
348
+
349
+ prev: function () {
350
+ var d = this.parsedDate,
351
+ o = this.opts;
352
+ switch (this.view) {
353
+ case 'days':
354
+ this.date = new Date(d.year, d.month - 1, 1);
355
+ if (o.onChangeMonth) o.onChangeMonth(this.parsedDate.month, this.parsedDate.year);
356
+ break;
357
+ case 'months':
358
+ this.date = new Date(d.year - 1, d.month, 1);
359
+ if (o.onChangeYear) o.onChangeYear(this.parsedDate.year);
360
+ break;
361
+ case 'years':
362
+ this.date = new Date(d.year - 10, 0, 1);
363
+ if (o.onChangeDecade) o.onChangeDecade(this.curDecade);
364
+ break;
365
+ }
366
+ },
367
+
368
+ formatDate: function (string, date) {
369
+ date = date || this.date;
370
+ var result = string,
371
+ boundary = this._getWordBoundaryRegExp,
372
+ locale = this.loc,
373
+ leadingZero = datepicker.getLeadingZeroNum,
374
+ decade = datepicker.getDecade(date),
375
+ d = datepicker.getParsedDate(date),
376
+ fullHours = d.fullHours,
377
+ hours = d.hours,
378
+ ampm = string.match(boundary('aa')) || string.match(boundary('AA')),
379
+ dayPeriod = 'am',
380
+ replacer = this._replacer,
381
+ validHours;
382
+
383
+ if (this.opts.timepicker && this.timepicker && ampm) {
384
+ validHours = this.timepicker._getValidHoursFromDate(date, ampm);
385
+ fullHours = leadingZero(validHours.hours);
386
+ hours = validHours.hours;
387
+ dayPeriod = validHours.dayPeriod;
388
+ }
389
+
390
+ switch (true) {
391
+ case /@/.test(result):
392
+ result = result.replace(/@/, date.getTime());
393
+ case /aa/.test(result):
394
+ result = replacer(result, boundary('aa'), dayPeriod);
395
+ case /AA/.test(result):
396
+ result = replacer(result, boundary('AA'), dayPeriod.toUpperCase());
397
+ case /dd/.test(result):
398
+ result = replacer(result, boundary('dd'), d.fullDate);
399
+ case /d/.test(result):
400
+ result = replacer(result, boundary('d'), d.date);
401
+ case /DD/.test(result):
402
+ result = replacer(result, boundary('DD'), locale.days[d.day]);
403
+ case /D/.test(result):
404
+ result = replacer(result, boundary('D'), locale.daysShort[d.day]);
405
+ case /mm/.test(result):
406
+ result = replacer(result, boundary('mm'), d.fullMonth);
407
+ case /m/.test(result):
408
+ result = replacer(result, boundary('m'), d.month + 1);
409
+ case /MM/.test(result):
410
+ result = replacer(result, boundary('MM'), this.loc.months[d.month]);
411
+ case /M/.test(result):
412
+ result = replacer(result, boundary('M'), locale.monthsShort[d.month]);
413
+ case /ii/.test(result):
414
+ result = replacer(result, boundary('ii'), d.fullMinutes);
415
+ case /i/.test(result):
416
+ result = replacer(result, boundary('i'), d.minutes);
417
+ case /hh/.test(result):
418
+ result = replacer(result, boundary('hh'), fullHours);
419
+ case /h/.test(result):
420
+ result = replacer(result, boundary('h'), hours);
421
+ case /yyyy/.test(result):
422
+ result = replacer(result, boundary('yyyy'), d.year);
423
+ case /yyyy1/.test(result):
424
+ result = replacer(result, boundary('yyyy1'), decade[0]);
425
+ case /yyyy2/.test(result):
426
+ result = replacer(result, boundary('yyyy2'), decade[1]);
427
+ case /yy/.test(result):
428
+ result = replacer(result, boundary('yy'), d.year.toString().slice(-2));
429
+ }
430
+
431
+ return result;
432
+ },
433
+
434
+ _replacer: function (str, reg, data) {
435
+ return str.replace(reg, function (match, p1,p2,p3) {
436
+ return p1 + data + p3;
437
+ })
438
+ },
439
+
440
+ _getWordBoundaryRegExp: function (sign) {
441
+ var symbols = '\\s|\\.|-|/|\\\\|,|\\$|\\!|\\?|:|;';
442
+
443
+ return new RegExp('(^|>|' + symbols + ')(' + sign + ')($|<|' + symbols + ')', 'g');
444
+ },
445
+
446
+
447
+ selectDate: function (date) {
448
+ var _this = this,
449
+ opts = _this.opts,
450
+ d = _this.parsedDate,
451
+ selectedDates = _this.selectedDates,
452
+ len = selectedDates.length,
453
+ newDate = '';
454
+
455
+ if (Array.isArray(date)) {
456
+ date.forEach(function (d) {
457
+ _this.selectDate(d)
458
+ });
459
+ return;
460
+ }
461
+
462
+ if (!(date instanceof Date)) return;
463
+
464
+ this.lastSelectedDate = date;
465
+
466
+ // Set new time values from Date
467
+ if (this.timepicker) {
468
+ this.timepicker._setTime(date);
469
+ }
470
+
471
+ // On this step timepicker will set valid values in it's instance
472
+ _this._trigger('selectDate', date);
473
+
474
+ // Set correct time values after timepicker's validation
475
+ // Prevent from setting hours or minutes which values are lesser then `min` value or
476
+ // greater then `max` value
477
+ if (this.timepicker) {
478
+ date.setHours(this.timepicker.hours);
479
+ date.setMinutes(this.timepicker.minutes)
480
+ }
481
+
482
+ if (_this.view == 'days') {
483
+ if (date.getMonth() != d.month && opts.moveToOtherMonthsOnSelect) {
484
+ newDate = new Date(date.getFullYear(), date.getMonth(), 1);
485
+ }
486
+ }
487
+
488
+ if (_this.view == 'years') {
489
+ if (date.getFullYear() != d.year && opts.moveToOtherYearsOnSelect) {
490
+ newDate = new Date(date.getFullYear(), 0, 1);
491
+ }
492
+ }
493
+
494
+ if (newDate) {
495
+ _this.silent = true;
496
+ _this.date = newDate;
497
+ _this.silent = false;
498
+ _this.nav._render()
499
+ }
500
+
501
+ if (opts.multipleDates && !opts.range) { // Set priority to range functionality
502
+ if (len === opts.multipleDates) return;
503
+ if (!_this._isSelected(date)) {
504
+ _this.selectedDates.push(date);
505
+ }
506
+ } else if (opts.range) {
507
+ if (len == 2) {
508
+ _this.selectedDates = [date];
509
+ _this.minRange = date;
510
+ _this.maxRange = '';
511
+ } else if (len == 1) {
512
+ _this.selectedDates.push(date);
513
+ if (!_this.maxRange){
514
+ _this.maxRange = date;
515
+ } else {
516
+ _this.minRange = date;
517
+ }
518
+ // Swap dates if they were selected via dp.selectDate() and second date was smaller then first
519
+ if (datepicker.bigger(_this.maxRange, _this.minRange)) {
520
+ _this.maxRange = _this.minRange;
521
+ _this.minRange = date;
522
+ }
523
+ _this.selectedDates = [_this.minRange, _this.maxRange]
524
+
525
+ } else {
526
+ _this.selectedDates = [date];
527
+ _this.minRange = date;
528
+ }
529
+ } else {
530
+ _this.selectedDates = [date];
531
+ }
532
+
533
+ _this._setInputValue();
534
+
535
+ if (opts.onSelect) {
536
+ _this._triggerOnChange();
537
+ }
538
+
539
+ if (opts.autoClose && !this.timepickerIsActive) {
540
+ if (!opts.multipleDates && !opts.range) {
541
+ _this.hide();
542
+ } else if (opts.range && _this.selectedDates.length == 2) {
543
+ _this.hide();
544
+ }
545
+ }
546
+
547
+ _this.views[this.currentView]._render()
548
+ },
549
+
550
+ removeDate: function (date) {
551
+ var selected = this.selectedDates,
552
+ _this = this;
553
+
554
+ if (!(date instanceof Date)) return;
555
+
556
+ return selected.some(function (curDate, i) {
557
+ if (datepicker.isSame(curDate, date)) {
558
+ selected.splice(i, 1);
559
+
560
+ if (!_this.selectedDates.length) {
561
+ _this.minRange = '';
562
+ _this.maxRange = '';
563
+ _this.lastSelectedDate = '';
564
+ } else {
565
+ _this.lastSelectedDate = _this.selectedDates[_this.selectedDates.length - 1];
566
+ }
567
+
568
+ _this.views[_this.currentView]._render();
569
+ _this._setInputValue();
570
+
571
+ if (_this.opts.onSelect) {
572
+ _this._triggerOnChange();
573
+ }
574
+
575
+ return true
576
+ }
577
+ })
578
+ },
579
+
580
+ today: function () {
581
+ this.silent = true;
582
+ this.view = this.opts.minView;
583
+ this.silent = false;
584
+ this.date = new Date();
585
+
586
+ if (this.opts.todayButton instanceof Date) {
587
+ this.selectDate(this.opts.todayButton)
588
+ }
589
+ },
590
+
591
+ clear: function () {
592
+ this.selectedDates = [];
593
+ this.minRange = '';
594
+ this.maxRange = '';
595
+ this.views[this.currentView]._render();
596
+ this._setInputValue();
597
+ if (this.opts.onSelect) {
598
+ this._triggerOnChange()
599
+ }
600
+ },
601
+
602
+ /**
603
+ * Updates datepicker options
604
+ * @param {String|Object} param - parameter's name to update. If object then it will extend current options
605
+ * @param {String|Number|Object} [value] - new param value
606
+ */
607
+ update: function (param, value) {
608
+ var len = arguments.length,
609
+ lastSelectedDate = this.lastSelectedDate;
610
+
611
+ if (len == 2) {
612
+ this.opts[param] = value;
613
+ } else if (len == 1 && typeof param == 'object') {
614
+ this.opts = $.extend(true, this.opts, param)
615
+ }
616
+
617
+ this._createShortCuts();
618
+ this._syncWithMinMaxDates();
619
+ this._defineLocale(this.opts.language);
620
+ this.nav._addButtonsIfNeed();
621
+ if (!this.opts.onlyTimepicker) this.nav._render();
622
+ this.views[this.currentView]._render();
623
+
624
+ if (this.elIsInput && !this.opts.inline) {
625
+ this._setPositionClasses(this.opts.position);
626
+ if (this.visible) {
627
+ this.setPosition(this.opts.position)
628
+ }
629
+ }
630
+
631
+ if (this.opts.classes) {
632
+ this.$datepicker.addClass(this.opts.classes)
633
+ }
634
+
635
+ if (this.opts.onlyTimepicker) {
636
+ this.$datepicker.addClass('-only-timepicker-');
637
+ }
638
+
639
+ if (this.opts.timepicker) {
640
+ if (lastSelectedDate) this.timepicker._handleDate(lastSelectedDate);
641
+ this.timepicker._updateRanges();
642
+ this.timepicker._updateCurrentTime();
643
+ // Change hours and minutes if it's values have been changed through min/max hours/minutes
644
+ if (lastSelectedDate) {
645
+ lastSelectedDate.setHours(this.timepicker.hours);
646
+ lastSelectedDate.setMinutes(this.timepicker.minutes);
647
+ }
648
+ }
649
+
650
+ this._setInputValue();
651
+
652
+ return this;
653
+ },
654
+
655
+ _syncWithMinMaxDates: function () {
656
+ var curTime = this.date.getTime();
657
+ this.silent = true;
658
+ if (this.minTime > curTime) {
659
+ this.date = this.minDate;
660
+ }
661
+
662
+ if (this.maxTime < curTime) {
663
+ this.date = this.maxDate;
664
+ }
665
+ this.silent = false;
666
+ },
667
+
668
+ _isSelected: function (checkDate, cellType) {
669
+ var res = false;
670
+ this.selectedDates.some(function (date) {
671
+ if (datepicker.isSame(date, checkDate, cellType)) {
672
+ res = date;
673
+ return true;
674
+ }
675
+ });
676
+ return res;
677
+ },
678
+
679
+ _setInputValue: function () {
680
+ var _this = this,
681
+ opts = _this.opts,
682
+ format = _this.loc.dateFormat,
683
+ altFormat = opts.altFieldDateFormat,
684
+ value = _this.selectedDates.map(function (date) {
685
+ return _this.formatDate(format, date)
686
+ }),
687
+ altValues;
688
+
689
+ if (opts.altField && _this.$altField.length) {
690
+ altValues = this.selectedDates.map(function (date) {
691
+ return _this.formatDate(altFormat, date)
692
+ });
693
+ altValues = altValues.join(this.opts.multipleDatesSeparator);
694
+ this.$altField.val(altValues);
695
+ }
696
+
697
+ value = value.join(this.opts.multipleDatesSeparator);
698
+
699
+ this.$el.val(value)
700
+ },
701
+
702
+ /**
703
+ * Check if date is between minDate and maxDate
704
+ * @param date {object} - date object
705
+ * @param type {string} - cell type
706
+ * @returns {boolean}
707
+ * @private
708
+ */
709
+ _isInRange: function (date, type) {
710
+ var time = date.getTime(),
711
+ d = datepicker.getParsedDate(date),
712
+ min = datepicker.getParsedDate(this.minDate),
713
+ max = datepicker.getParsedDate(this.maxDate),
714
+ dMinTime = new Date(d.year, d.month, min.date).getTime(),
715
+ dMaxTime = new Date(d.year, d.month, max.date).getTime(),
716
+ types = {
717
+ day: time >= this.minTime && time <= this.maxTime,
718
+ month: dMinTime >= this.minTime && dMaxTime <= this.maxTime,
719
+ year: d.year >= min.year && d.year <= max.year
720
+ };
721
+ return type ? types[type] : types.day
722
+ },
723
+
724
+ _getDimensions: function ($el) {
725
+ var offset = $el.offset();
726
+
727
+ return {
728
+ width: $el.outerWidth(),
729
+ height: $el.outerHeight(),
730
+ left: offset.left,
731
+ top: offset.top
732
+ }
733
+ },
734
+
735
+ _getDateFromCell: function (cell) {
736
+ var curDate = this.parsedDate,
737
+ year = cell.data('year') || curDate.year,
738
+ month = cell.data('month') == undefined ? curDate.month : cell.data('month'),
739
+ date = cell.data('date') || 1;
740
+
741
+ return new Date(year, month, date);
742
+ },
743
+
744
+ _setPositionClasses: function (pos) {
745
+ pos = pos.split(' ');
746
+ var main = pos[0],
747
+ sec = pos[1],
748
+ classes = 'datepicker -' + main + '-' + sec + '- -from-' + main + '-';
749
+
750
+ if (this.visible) classes += ' active';
751
+
752
+ this.$datepicker
753
+ .removeAttr('class')
754
+ .addClass(classes);
755
+ },
756
+
757
+ setPosition: function (position) {
758
+ position = position || this.opts.position;
759
+
760
+ var dims = this._getDimensions(this.$el),
761
+ selfDims = this._getDimensions(this.$datepicker),
762
+ pos = position.split(' '),
763
+ top, left,
764
+ offset = this.opts.offset,
765
+ main = pos[0],
766
+ secondary = pos[1];
767
+
768
+ switch (main) {
769
+ case 'top':
770
+ top = dims.top - selfDims.height - offset;
771
+ break;
772
+ case 'right':
773
+ left = dims.left + dims.width + offset;
774
+ break;
775
+ case 'bottom':
776
+ top = dims.top + dims.height + offset;
777
+ break;
778
+ case 'left':
779
+ left = dims.left - selfDims.width - offset;
780
+ break;
781
+ }
782
+
783
+ switch(secondary) {
784
+ case 'top':
785
+ top = dims.top;
786
+ break;
787
+ case 'right':
788
+ left = dims.left + dims.width - selfDims.width;
789
+ break;
790
+ case 'bottom':
791
+ top = dims.top + dims.height - selfDims.height;
792
+ break;
793
+ case 'left':
794
+ left = dims.left;
795
+ break;
796
+ case 'center':
797
+ if (/left|right/.test(main)) {
798
+ top = dims.top + dims.height/2 - selfDims.height/2;
799
+ } else {
800
+ left = dims.left + dims.width/2 - selfDims.width/2;
801
+ }
802
+ }
803
+
804
+ this.$datepicker
805
+ .css({
806
+ left: left,
807
+ top: top
808
+ })
809
+ },
810
+
811
+ show: function () {
812
+ var onShow = this.opts.onShow;
813
+
814
+ this.setPosition(this.opts.position);
815
+ this.$datepicker.addClass('active');
816
+ this.visible = true;
817
+
818
+ if (onShow) {
819
+ this._bindVisionEvents(onShow)
820
+ }
821
+ },
822
+
823
+ hide: function () {
824
+ var onHide = this.opts.onHide;
825
+
826
+ this.$datepicker
827
+ .removeClass('active')
828
+ .css({
829
+ left: '-100000px'
830
+ });
831
+
832
+ this.focused = '';
833
+ this.keys = [];
834
+
835
+ this.inFocus = false;
836
+ this.visible = false;
837
+ this.$el.blur();
838
+
839
+ if (onHide) {
840
+ this._bindVisionEvents(onHide)
841
+ }
842
+ },
843
+
844
+ down: function (date) {
845
+ this._changeView(date, 'down');
846
+ },
847
+
848
+ up: function (date) {
849
+ this._changeView(date, 'up');
850
+ },
851
+
852
+ _bindVisionEvents: function (event) {
853
+ this.$datepicker.off('transitionend.dp');
854
+ event(this, false);
855
+ this.$datepicker.one('transitionend.dp', event.bind(this, this, true))
856
+ },
857
+
858
+ _changeView: function (date, dir) {
859
+ date = date || this.focused || this.date;
860
+
861
+ var nextView = dir == 'up' ? this.viewIndex + 1 : this.viewIndex - 1;
862
+ if (nextView > 2) nextView = 2;
863
+ if (nextView < 0) nextView = 0;
864
+
865
+ this.silent = true;
866
+ this.date = new Date(date.getFullYear(), date.getMonth(), 1);
867
+ this.silent = false;
868
+ this.view = this.viewIndexes[nextView];
869
+
870
+ },
871
+
872
+ _handleHotKey: function (key) {
873
+ var date = datepicker.getParsedDate(this._getFocusedDate()),
874
+ focusedParsed,
875
+ o = this.opts,
876
+ newDate,
877
+ totalDaysInNextMonth,
878
+ monthChanged = false,
879
+ yearChanged = false,
880
+ decadeChanged = false,
881
+ y = date.year,
882
+ m = date.month,
883
+ d = date.date;
884
+
885
+ switch (key) {
886
+ case 'ctrlRight':
887
+ case 'ctrlUp':
888
+ m += 1;
889
+ monthChanged = true;
890
+ break;
891
+ case 'ctrlLeft':
892
+ case 'ctrlDown':
893
+ m -= 1;
894
+ monthChanged = true;
895
+ break;
896
+ case 'shiftRight':
897
+ case 'shiftUp':
898
+ yearChanged = true;
899
+ y += 1;
900
+ break;
901
+ case 'shiftLeft':
902
+ case 'shiftDown':
903
+ yearChanged = true;
904
+ y -= 1;
905
+ break;
906
+ case 'altRight':
907
+ case 'altUp':
908
+ decadeChanged = true;
909
+ y += 10;
910
+ break;
911
+ case 'altLeft':
912
+ case 'altDown':
913
+ decadeChanged = true;
914
+ y -= 10;
915
+ break;
916
+ case 'ctrlShiftUp':
917
+ this.up();
918
+ break;
919
+ }
920
+
921
+ totalDaysInNextMonth = datepicker.getDaysCount(new Date(y,m));
922
+ newDate = new Date(y,m,d);
923
+
924
+ // If next month has less days than current, set date to total days in that month
925
+ if (totalDaysInNextMonth < d) d = totalDaysInNextMonth;
926
+
927
+ // Check if newDate is in valid range
928
+ if (newDate.getTime() < this.minTime) {
929
+ newDate = this.minDate;
930
+ } else if (newDate.getTime() > this.maxTime) {
931
+ newDate = this.maxDate;
932
+ }
933
+
934
+ this.focused = newDate;
935
+
936
+ focusedParsed = datepicker.getParsedDate(newDate);
937
+ if (monthChanged && o.onChangeMonth) {
938
+ o.onChangeMonth(focusedParsed.month, focusedParsed.year)
939
+ }
940
+ if (yearChanged && o.onChangeYear) {
941
+ o.onChangeYear(focusedParsed.year)
942
+ }
943
+ if (decadeChanged && o.onChangeDecade) {
944
+ o.onChangeDecade(this.curDecade)
945
+ }
946
+ },
947
+
948
+ _registerKey: function (key) {
949
+ var exists = this.keys.some(function (curKey) {
950
+ return curKey == key;
951
+ });
952
+
953
+ if (!exists) {
954
+ this.keys.push(key)
955
+ }
956
+ },
957
+
958
+ _unRegisterKey: function (key) {
959
+ var index = this.keys.indexOf(key);
960
+
961
+ this.keys.splice(index, 1);
962
+ },
963
+
964
+ _isHotKeyPressed: function () {
965
+ var currentHotKey,
966
+ found = false,
967
+ _this = this,
968
+ pressedKeys = this.keys.sort();
969
+
970
+ for (var hotKey in hotKeys) {
971
+ currentHotKey = hotKeys[hotKey];
972
+ if (pressedKeys.length != currentHotKey.length) continue;
973
+
974
+ if (currentHotKey.every(function (key, i) { return key == pressedKeys[i]})) {
975
+ _this._trigger('hotKey', hotKey);
976
+ found = true;
977
+ }
978
+ }
979
+
980
+ return found;
981
+ },
982
+
983
+ _trigger: function (event, args) {
984
+ this.$el.trigger(event, args)
985
+ },
986
+
987
+ _focusNextCell: function (keyCode, type) {
988
+ type = type || this.cellType;
989
+
990
+ var date = datepicker.getParsedDate(this._getFocusedDate()),
991
+ y = date.year,
992
+ m = date.month,
993
+ d = date.date;
994
+
995
+ if (this._isHotKeyPressed()){
996
+ return;
997
+ }
998
+
999
+ switch(keyCode) {
1000
+ case 37: // left
1001
+ type == 'day' ? (d -= 1) : '';
1002
+ type == 'month' ? (m -= 1) : '';
1003
+ type == 'year' ? (y -= 1) : '';
1004
+ break;
1005
+ case 38: // up
1006
+ type == 'day' ? (d -= 7) : '';
1007
+ type == 'month' ? (m -= 3) : '';
1008
+ type == 'year' ? (y -= 4) : '';
1009
+ break;
1010
+ case 39: // right
1011
+ type == 'day' ? (d += 1) : '';
1012
+ type == 'month' ? (m += 1) : '';
1013
+ type == 'year' ? (y += 1) : '';
1014
+ break;
1015
+ case 40: // down
1016
+ type == 'day' ? (d += 7) : '';
1017
+ type == 'month' ? (m += 3) : '';
1018
+ type == 'year' ? (y += 4) : '';
1019
+ break;
1020
+ }
1021
+
1022
+ var nd = new Date(y,m,d);
1023
+ if (nd.getTime() < this.minTime) {
1024
+ nd = this.minDate;
1025
+ } else if (nd.getTime() > this.maxTime) {
1026
+ nd = this.maxDate;
1027
+ }
1028
+
1029
+ this.focused = nd;
1030
+
1031
+ },
1032
+
1033
+ _getFocusedDate: function () {
1034
+ var focused = this.focused || this.selectedDates[this.selectedDates.length - 1],
1035
+ d = this.parsedDate;
1036
+
1037
+ if (!focused) {
1038
+ switch (this.view) {
1039
+ case 'days':
1040
+ focused = new Date(d.year, d.month, new Date().getDate());
1041
+ break;
1042
+ case 'months':
1043
+ focused = new Date(d.year, d.month, 1);
1044
+ break;
1045
+ case 'years':
1046
+ focused = new Date(d.year, 0, 1);
1047
+ break;
1048
+ }
1049
+ }
1050
+
1051
+ return focused;
1052
+ },
1053
+
1054
+ _getCell: function (date, type) {
1055
+ type = type || this.cellType;
1056
+
1057
+ var d = datepicker.getParsedDate(date),
1058
+ selector = '.datepicker--cell[data-year="' + d.year + '"]',
1059
+ $cell;
1060
+
1061
+ switch (type) {
1062
+ case 'month':
1063
+ selector = '[data-month="' + d.month + '"]';
1064
+ break;
1065
+ case 'day':
1066
+ selector += '[data-month="' + d.month + '"][data-date="' + d.date + '"]';
1067
+ break;
1068
+ }
1069
+ $cell = this.views[this.currentView].$el.find(selector);
1070
+
1071
+ return $cell.length ? $cell : $('');
1072
+ },
1073
+
1074
+ destroy: function () {
1075
+ var _this = this;
1076
+ _this.$el
1077
+ .off('.adp')
1078
+ .data('datepicker', '');
1079
+
1080
+ _this.selectedDates = [];
1081
+ _this.focused = '';
1082
+ _this.views = {};
1083
+ _this.keys = [];
1084
+ _this.minRange = '';
1085
+ _this.maxRange = '';
1086
+
1087
+ if (_this.opts.inline || !_this.elIsInput) {
1088
+ _this.$datepicker.closest('.datepicker-inline').remove();
1089
+ } else {
1090
+ _this.$datepicker.remove();
1091
+ }
1092
+ },
1093
+
1094
+ _handleAlreadySelectedDates: function (alreadySelected, selectedDate) {
1095
+ if (this.opts.range) {
1096
+ if (!this.opts.toggleSelected) {
1097
+ // Add possibility to select same date when range is true
1098
+ if (this.selectedDates.length != 2) {
1099
+ this._trigger('clickCell', selectedDate);
1100
+ }
1101
+ } else {
1102
+ this.removeDate(selectedDate);
1103
+ }
1104
+ } else if (this.opts.toggleSelected){
1105
+ this.removeDate(selectedDate);
1106
+ }
1107
+
1108
+ // Change last selected date to be able to change time when clicking on this cell
1109
+ if (!this.opts.toggleSelected) {
1110
+ this.lastSelectedDate = alreadySelected;
1111
+ if (this.opts.timepicker) {
1112
+ this.timepicker._setTime(alreadySelected);
1113
+ this.timepicker.update();
1114
+ }
1115
+ }
1116
+ },
1117
+
1118
+ _onShowEvent: function (e) {
1119
+ if (!this.visible) {
1120
+ this.show();
1121
+ }
1122
+ },
1123
+
1124
+ _onBlur: function () {
1125
+ if (!this.inFocus && this.visible) {
1126
+ this.hide();
1127
+ }
1128
+ },
1129
+
1130
+ _onMouseDownDatepicker: function (e) {
1131
+ this.inFocus = true;
1132
+ },
1133
+
1134
+ _onMouseUpDatepicker: function (e) {
1135
+ this.inFocus = false;
1136
+ e.originalEvent.inFocus = true;
1137
+ if (!e.originalEvent.timepickerFocus) this.$el.focus();
1138
+ },
1139
+
1140
+ _onKeyUpGeneral: function (e) {
1141
+ var val = this.$el.val();
1142
+
1143
+ if (!val) {
1144
+ this.clear();
1145
+ }
1146
+ },
1147
+
1148
+ _onResize: function () {
1149
+ if (this.visible) {
1150
+ this.setPosition();
1151
+ }
1152
+ },
1153
+
1154
+ _onMouseUpBody: function (e) {
1155
+ if (e.originalEvent.inFocus) return;
1156
+
1157
+ if (this.visible && !this.inFocus) {
1158
+ this.hide();
1159
+ }
1160
+ },
1161
+
1162
+ _onMouseUpEl: function (e) {
1163
+ e.originalEvent.inFocus = true;
1164
+ setTimeout(this._onKeyUpGeneral.bind(this),4);
1165
+ },
1166
+
1167
+ _onKeyDown: function (e) {
1168
+ var code = e.which;
1169
+ this._registerKey(code);
1170
+
1171
+ // Arrows
1172
+ if (code >= 37 && code <= 40) {
1173
+ e.preventDefault();
1174
+ this._focusNextCell(code);
1175
+ }
1176
+
1177
+ // Enter
1178
+ if (code == 13) {
1179
+ if (this.focused) {
1180
+ if (this._getCell(this.focused).hasClass('-disabled-')) return;
1181
+ if (this.view != this.opts.minView) {
1182
+ this.down()
1183
+ } else {
1184
+ var alreadySelected = this._isSelected(this.focused, this.cellType);
1185
+
1186
+ if (!alreadySelected) {
1187
+ if (this.timepicker) {
1188
+ this.focused.setHours(this.timepicker.hours);
1189
+ this.focused.setMinutes(this.timepicker.minutes);
1190
+ }
1191
+ this.selectDate(this.focused);
1192
+ return;
1193
+ }
1194
+ this._handleAlreadySelectedDates(alreadySelected, this.focused)
1195
+ }
1196
+ }
1197
+ }
1198
+
1199
+ // Esc
1200
+ if (code == 27) {
1201
+ this.hide();
1202
+ }
1203
+ },
1204
+
1205
+ _onKeyUp: function (e) {
1206
+ var code = e.which;
1207
+ this._unRegisterKey(code);
1208
+ },
1209
+
1210
+ _onHotKey: function (e, hotKey) {
1211
+ this._handleHotKey(hotKey);
1212
+ },
1213
+
1214
+ _onMouseEnterCell: function (e) {
1215
+ var $cell = $(e.target).closest('.datepicker--cell'),
1216
+ date = this._getDateFromCell($cell);
1217
+
1218
+ // Prevent from unnecessary rendering and setting new currentDate
1219
+ this.silent = true;
1220
+
1221
+ if (this.focused) {
1222
+ this.focused = ''
1223
+ }
1224
+
1225
+ $cell.addClass('-focus-');
1226
+
1227
+ this.focused = date;
1228
+ this.silent = false;
1229
+
1230
+ if (this.opts.range && this.selectedDates.length == 1) {
1231
+ this.minRange = this.selectedDates[0];
1232
+ this.maxRange = '';
1233
+ if (datepicker.less(this.minRange, this.focused)) {
1234
+ this.maxRange = this.minRange;
1235
+ this.minRange = '';
1236
+ }
1237
+ this.views[this.currentView]._update();
1238
+ }
1239
+ },
1240
+
1241
+ _onMouseLeaveCell: function (e) {
1242
+ var $cell = $(e.target).closest('.datepicker--cell');
1243
+
1244
+ $cell.removeClass('-focus-');
1245
+
1246
+ this.silent = true;
1247
+ this.focused = '';
1248
+ this.silent = false;
1249
+ },
1250
+
1251
+ _onTimeChange: function (e, h, m) {
1252
+ var date = new Date(),
1253
+ selectedDates = this.selectedDates,
1254
+ selected = false;
1255
+
1256
+ if (selectedDates.length) {
1257
+ selected = true;
1258
+ date = this.lastSelectedDate;
1259
+ }
1260
+
1261
+ date.setHours(h);
1262
+ date.setMinutes(m);
1263
+
1264
+ if (!selected && !this._getCell(date).hasClass('-disabled-')) {
1265
+ this.selectDate(date);
1266
+ } else {
1267
+ this._setInputValue();
1268
+ if (this.opts.onSelect) {
1269
+ this._triggerOnChange();
1270
+ }
1271
+ }
1272
+ },
1273
+
1274
+ _onClickCell: function (e, date) {
1275
+ if (this.timepicker) {
1276
+ date.setHours(this.timepicker.hours);
1277
+ date.setMinutes(this.timepicker.minutes);
1278
+ }
1279
+ this.selectDate(date);
1280
+ },
1281
+
1282
+ set focused(val) {
1283
+ if (!val && this.focused) {
1284
+ var $cell = this._getCell(this.focused);
1285
+
1286
+ if ($cell.length) {
1287
+ $cell.removeClass('-focus-')
1288
+ }
1289
+ }
1290
+ this._focused = val;
1291
+ if (this.opts.range && this.selectedDates.length == 1) {
1292
+ this.minRange = this.selectedDates[0];
1293
+ this.maxRange = '';
1294
+ if (datepicker.less(this.minRange, this._focused)) {
1295
+ this.maxRange = this.minRange;
1296
+ this.minRange = '';
1297
+ }
1298
+ }
1299
+ if (this.silent) return;
1300
+ this.date = val;
1301
+ },
1302
+
1303
+ get focused() {
1304
+ return this._focused;
1305
+ },
1306
+
1307
+ get parsedDate() {
1308
+ return datepicker.getParsedDate(this.date);
1309
+ },
1310
+
1311
+ set date (val) {
1312
+ if (!(val instanceof Date)) return;
1313
+
1314
+ this.currentDate = val;
1315
+
1316
+ if (this.inited && !this.silent) {
1317
+ this.views[this.view]._render();
1318
+ this.nav._render();
1319
+ if (this.visible && this.elIsInput) {
1320
+ this.setPosition();
1321
+ }
1322
+ }
1323
+ return val;
1324
+ },
1325
+
1326
+ get date () {
1327
+ return this.currentDate
1328
+ },
1329
+
1330
+ set view (val) {
1331
+ this.viewIndex = this.viewIndexes.indexOf(val);
1332
+
1333
+ if (this.viewIndex < 0) {
1334
+ return;
1335
+ }
1336
+
1337
+ this.prevView = this.currentView;
1338
+ this.currentView = val;
1339
+
1340
+ if (this.inited) {
1341
+ if (!this.views[val]) {
1342
+ this.views[val] = new $.fn.datepicker.Body(this, val, this.opts)
1343
+ } else {
1344
+ this.views[val]._render();
1345
+ }
1346
+
1347
+ this.views[this.prevView].hide();
1348
+ this.views[val].show();
1349
+ this.nav._render();
1350
+
1351
+ if (this.opts.onChangeView) {
1352
+ this.opts.onChangeView(val)
1353
+ }
1354
+ if (this.elIsInput && this.visible) this.setPosition();
1355
+ }
1356
+
1357
+ return val
1358
+ },
1359
+
1360
+ get view() {
1361
+ return this.currentView;
1362
+ },
1363
+
1364
+ get cellType() {
1365
+ return this.view.substring(0, this.view.length - 1)
1366
+ },
1367
+
1368
+ get minTime() {
1369
+ var min = datepicker.getParsedDate(this.minDate);
1370
+ return new Date(min.year, min.month, min.date).getTime()
1371
+ },
1372
+
1373
+ get maxTime() {
1374
+ var max = datepicker.getParsedDate(this.maxDate);
1375
+ return new Date(max.year, max.month, max.date).getTime()
1376
+ },
1377
+
1378
+ get curDecade() {
1379
+ return datepicker.getDecade(this.date)
1380
+ }
1381
+ };
1382
+
1383
+ // Utils
1384
+ // -------------------------------------------------
1385
+
1386
+ datepicker.getDaysCount = function (date) {
1387
+ return new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate();
1388
+ };
1389
+
1390
+ datepicker.getParsedDate = function (date) {
1391
+ return {
1392
+ year: date.getFullYear(),
1393
+ month: date.getMonth(),
1394
+ fullMonth: (date.getMonth() + 1) < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1, // One based
1395
+ date: date.getDate(),
1396
+ fullDate: date.getDate() < 10 ? '0' + date.getDate() : date.getDate(),
1397
+ day: date.getDay(),
1398
+ hours: date.getHours(),
1399
+ fullHours: date.getHours() < 10 ? '0' + date.getHours() : date.getHours() ,
1400
+ minutes: date.getMinutes(),
1401
+ fullMinutes: date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()
1402
+ }
1403
+ };
1404
+
1405
+ datepicker.getDecade = function (date) {
1406
+ var firstYear = Math.floor(date.getFullYear() / 10) * 10;
1407
+
1408
+ return [firstYear, firstYear + 9];
1409
+ };
1410
+
1411
+ datepicker.template = function (str, data) {
1412
+ return str.replace(/#\{([\w]+)\}/g, function (source, match) {
1413
+ if (data[match] || data[match] === 0) {
1414
+ return data[match]
1415
+ }
1416
+ });
1417
+ };
1418
+
1419
+ datepicker.isSame = function (date1, date2, type) {
1420
+ if (!date1 || !date2) return false;
1421
+ var d1 = datepicker.getParsedDate(date1),
1422
+ d2 = datepicker.getParsedDate(date2),
1423
+ _type = type ? type : 'day',
1424
+
1425
+ conditions = {
1426
+ day: d1.date == d2.date && d1.month == d2.month && d1.year == d2.year,
1427
+ month: d1.month == d2.month && d1.year == d2.year,
1428
+ year: d1.year == d2.year
1429
+ };
1430
+
1431
+ return conditions[_type];
1432
+ };
1433
+
1434
+ datepicker.less = function (dateCompareTo, date, type) {
1435
+ if (!dateCompareTo || !date) return false;
1436
+ return date.getTime() < dateCompareTo.getTime();
1437
+ };
1438
+
1439
+ datepicker.bigger = function (dateCompareTo, date, type) {
1440
+ if (!dateCompareTo || !date) return false;
1441
+ return date.getTime() > dateCompareTo.getTime();
1442
+ };
1443
+
1444
+ datepicker.getLeadingZeroNum = function (num) {
1445
+ return parseInt(num) < 10 ? '0' + num : num;
1446
+ };
1447
+
1448
+ /**
1449
+ * Returns copy of date with hours and minutes equals to 0
1450
+ * @param date {Date}
1451
+ */
1452
+ datepicker.resetTime = function (date) {
1453
+ if (typeof date != 'object') return;
1454
+ date = datepicker.getParsedDate(date);
1455
+ return new Date(date.year, date.month, date.date)
1456
+ };
1457
+
1458
+ $.fn.datepicker = function ( options ) {
1459
+ return this.each(function () {
1460
+ if (!$.data(this, pluginName)) {
1461
+ $.data(this, pluginName,
1462
+ new Datepicker( this, options ));
1463
+ } else {
1464
+ var _this = $.data(this, pluginName);
1465
+
1466
+ _this.opts = $.extend(true, _this.opts, options);
1467
+ _this.update();
1468
+ }
1469
+ });
1470
+ };
1471
+
1472
+ $.fn.datepicker.Constructor = Datepicker;
1473
+
1474
+ $.fn.datepicker.language = {
1475
+ ru: {
1476
+ days: ['Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота'],
1477
+ daysShort: ['Вос','Пон','Вто','Сре','Чет','Пят','Суб'],
1478
+ daysMin: ['Вс','Пн','Вт','Ср','Чт','Пт','Сб'],
1479
+ months: ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'],
1480
+ monthsShort: ['Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июн', 'Июл', 'Авг', 'Сен', 'Окт', 'Ноя', 'Дек'],
1481
+ today: 'Сегодня',
1482
+ clear: 'Очистить',
1483
+ dateFormat: 'dd.mm.yyyy',
1484
+ timeFormat: 'hh:ii',
1485
+ firstDay: 1
1486
+ }
1487
+ };
1488
+
1489
+ $(function () {
1490
+ $(autoInitSelector).datepicker();
1491
+ })
1492
+
1493
+ })();
1494
+
1495
+ ;(function () {
1496
+ var templates = {
1497
+ days:'' +
1498
+ '<div class="datepicker--days datepicker--body">' +
1499
+ '<div class="datepicker--days-names"></div>' +
1500
+ '<div class="datepicker--cells datepicker--cells-days"></div>' +
1501
+ '</div>',
1502
+ months: '' +
1503
+ '<div class="datepicker--months datepicker--body">' +
1504
+ '<div class="datepicker--cells datepicker--cells-months"></div>' +
1505
+ '</div>',
1506
+ years: '' +
1507
+ '<div class="datepicker--years datepicker--body">' +
1508
+ '<div class="datepicker--cells datepicker--cells-years"></div>' +
1509
+ '</div>'
1510
+ },
1511
+ datepicker = $.fn.datepicker,
1512
+ dp = datepicker.Constructor;
1513
+
1514
+ datepicker.Body = function (d, type, opts) {
1515
+ this.d = d;
1516
+ this.type = type;
1517
+ this.opts = opts;
1518
+ this.$el = $('');
1519
+
1520
+ if (this.opts.onlyTimepicker) return;
1521
+ this.init();
1522
+ };
1523
+
1524
+ datepicker.Body.prototype = {
1525
+ init: function () {
1526
+ this._buildBaseHtml();
1527
+ this._render();
1528
+
1529
+ this._bindEvents();
1530
+ },
1531
+
1532
+ _bindEvents: function () {
1533
+ this.$el.on('click', '.datepicker--cell', $.proxy(this._onClickCell, this));
1534
+ },
1535
+
1536
+ _buildBaseHtml: function () {
1537
+ this.$el = $(templates[this.type]).appendTo(this.d.$content);
1538
+ this.$names = $('.datepicker--days-names', this.$el);
1539
+ this.$cells = $('.datepicker--cells', this.$el);
1540
+ },
1541
+
1542
+ _getDayNamesHtml: function (firstDay, curDay, html, i) {
1543
+ curDay = curDay != undefined ? curDay : firstDay;
1544
+ html = html ? html : '';
1545
+ i = i != undefined ? i : 0;
1546
+
1547
+ if (i > 7) return html;
1548
+ if (curDay == 7) return this._getDayNamesHtml(firstDay, 0, html, ++i);
1549
+
1550
+ html += '<div class="datepicker--day-name' + (this.d.isWeekend(curDay) ? " -weekend-" : "") + '">' + this.d.loc.daysMin[curDay] + '</div>';
1551
+
1552
+ return this._getDayNamesHtml(firstDay, ++curDay, html, ++i);
1553
+ },
1554
+
1555
+ _getCellContents: function (date, type) {
1556
+ var classes = "datepicker--cell datepicker--cell-" + type,
1557
+ currentDate = new Date(),
1558
+ parent = this.d,
1559
+ minRange = dp.resetTime(parent.minRange),
1560
+ maxRange = dp.resetTime(parent.maxRange),
1561
+ opts = parent.opts,
1562
+ d = dp.getParsedDate(date),
1563
+ render = {},
1564
+ html = d.date;
1565
+
1566
+ switch (type) {
1567
+ case 'day':
1568
+ if (parent.isWeekend(d.day)) classes += " -weekend-";
1569
+ if (d.month != this.d.parsedDate.month) {
1570
+ classes += " -other-month-";
1571
+ if (!opts.selectOtherMonths) {
1572
+ classes += " -disabled-";
1573
+ }
1574
+ if (!opts.showOtherMonths) html = '';
1575
+ }
1576
+ break;
1577
+ case 'month':
1578
+ html = parent.loc[parent.opts.monthsField][d.month];
1579
+ break;
1580
+ case 'year':
1581
+ var decade = parent.curDecade;
1582
+ html = d.year;
1583
+ if (d.year < decade[0] || d.year > decade[1]) {
1584
+ classes += ' -other-decade-';
1585
+ if (!opts.selectOtherYears) {
1586
+ classes += " -disabled-";
1587
+ }
1588
+ if (!opts.showOtherYears) html = '';
1589
+ }
1590
+ break;
1591
+ }
1592
+
1593
+ if (opts.onRenderCell) {
1594
+ render = opts.onRenderCell(date, type) || {};
1595
+ html = render.html ? render.html : html;
1596
+ classes += render.classes ? ' ' + render.classes : '';
1597
+ }
1598
+
1599
+ if (opts.range) {
1600
+ if (dp.isSame(minRange, date, type)) classes += ' -range-from-';
1601
+ if (dp.isSame(maxRange, date, type)) classes += ' -range-to-';
1602
+
1603
+ if (parent.selectedDates.length == 1 && parent.focused) {
1604
+ if (
1605
+ (dp.bigger(minRange, date) && dp.less(parent.focused, date)) ||
1606
+ (dp.less(maxRange, date) && dp.bigger(parent.focused, date)))
1607
+ {
1608
+ classes += ' -in-range-'
1609
+ }
1610
+
1611
+ if (dp.less(maxRange, date) && dp.isSame(parent.focused, date)) {
1612
+ classes += ' -range-from-'
1613
+ }
1614
+ if (dp.bigger(minRange, date) && dp.isSame(parent.focused, date)) {
1615
+ classes += ' -range-to-'
1616
+ }
1617
+
1618
+ } else if (parent.selectedDates.length == 2) {
1619
+ if (dp.bigger(minRange, date) && dp.less(maxRange, date)) {
1620
+ classes += ' -in-range-'
1621
+ }
1622
+ }
1623
+ }
1624
+
1625
+
1626
+ if (dp.isSame(currentDate, date, type)) classes += ' -current-';
1627
+ if (parent.focused && dp.isSame(date, parent.focused, type)) classes += ' -focus-';
1628
+ if (parent._isSelected(date, type)) classes += ' -selected-';
1629
+ if (!parent._isInRange(date, type) || render.disabled) classes += ' -disabled-';
1630
+
1631
+ return {
1632
+ html: html,
1633
+ classes: classes
1634
+ }
1635
+ },
1636
+
1637
+ /**
1638
+ * Calculates days number to render. Generates days html and returns it.
1639
+ * @param {object} date - Date object
1640
+ * @returns {string}
1641
+ * @private
1642
+ */
1643
+ _getDaysHtml: function (date) {
1644
+ var totalMonthDays = dp.getDaysCount(date),
1645
+ firstMonthDay = new Date(date.getFullYear(), date.getMonth(), 1).getDay(),
1646
+ lastMonthDay = new Date(date.getFullYear(), date.getMonth(), totalMonthDays).getDay(),
1647
+ daysFromPevMonth = firstMonthDay - this.d.loc.firstDay,
1648
+ daysFromNextMonth = 6 - lastMonthDay + this.d.loc.firstDay;
1649
+
1650
+ daysFromPevMonth = daysFromPevMonth < 0 ? daysFromPevMonth + 7 : daysFromPevMonth;
1651
+ daysFromNextMonth = daysFromNextMonth > 6 ? daysFromNextMonth - 7 : daysFromNextMonth;
1652
+
1653
+ var startDayIndex = -daysFromPevMonth + 1,
1654
+ m, y,
1655
+ html = '';
1656
+
1657
+ for (var i = startDayIndex, max = totalMonthDays + daysFromNextMonth; i <= max; i++) {
1658
+ y = date.getFullYear();
1659
+ m = date.getMonth();
1660
+
1661
+ html += this._getDayHtml(new Date(y, m, i))
1662
+ }
1663
+
1664
+ return html;
1665
+ },
1666
+
1667
+ _getDayHtml: function (date) {
1668
+ var content = this._getCellContents(date, 'day');
1669
+
1670
+ return '<div class="' + content.classes + '" ' +
1671
+ 'data-date="' + date.getDate() + '" ' +
1672
+ 'data-month="' + date.getMonth() + '" ' +
1673
+ 'data-year="' + date.getFullYear() + '">' + content.html + '</div>';
1674
+ },
1675
+
1676
+ /**
1677
+ * Generates months html
1678
+ * @param {object} date - date instance
1679
+ * @returns {string}
1680
+ * @private
1681
+ */
1682
+ _getMonthsHtml: function (date) {
1683
+ var html = '',
1684
+ d = dp.getParsedDate(date),
1685
+ i = 0;
1686
+
1687
+ while(i < 12) {
1688
+ html += this._getMonthHtml(new Date(d.year, i));
1689
+ i++
1690
+ }
1691
+
1692
+ return html;
1693
+ },
1694
+
1695
+ _getMonthHtml: function (date) {
1696
+ var content = this._getCellContents(date, 'month');
1697
+
1698
+ return '<div class="' + content.classes + '" data-month="' + date.getMonth() + '">' + content.html + '</div>'
1699
+ },
1700
+
1701
+ _getYearsHtml: function (date) {
1702
+ var d = dp.getParsedDate(date),
1703
+ decade = dp.getDecade(date),
1704
+ firstYear = decade[0] - 1,
1705
+ html = '',
1706
+ i = firstYear;
1707
+
1708
+ for (i; i <= decade[1] + 1; i++) {
1709
+ html += this._getYearHtml(new Date(i , 0));
1710
+ }
1711
+
1712
+ return html;
1713
+ },
1714
+
1715
+ _getYearHtml: function (date) {
1716
+ var content = this._getCellContents(date, 'year');
1717
+
1718
+ return '<div class="' + content.classes + '" data-year="' + date.getFullYear() + '">' + content.html + '</div>'
1719
+ },
1720
+
1721
+ _renderTypes: {
1722
+ days: function () {
1723
+ var dayNames = this._getDayNamesHtml(this.d.loc.firstDay),
1724
+ days = this._getDaysHtml(this.d.currentDate);
1725
+
1726
+ this.$cells.html(days);
1727
+ this.$names.html(dayNames)
1728
+ },
1729
+ months: function () {
1730
+ var html = this._getMonthsHtml(this.d.currentDate);
1731
+
1732
+ this.$cells.html(html)
1733
+ },
1734
+ years: function () {
1735
+ var html = this._getYearsHtml(this.d.currentDate);
1736
+
1737
+ this.$cells.html(html)
1738
+ }
1739
+ },
1740
+
1741
+ _render: function () {
1742
+ if (this.opts.onlyTimepicker) return;
1743
+ this._renderTypes[this.type].bind(this)();
1744
+ },
1745
+
1746
+ _update: function () {
1747
+ var $cells = $('.datepicker--cell', this.$cells),
1748
+ _this = this,
1749
+ classes,
1750
+ $cell,
1751
+ date;
1752
+ $cells.each(function (cell, i) {
1753
+ $cell = $(this);
1754
+ date = _this.d._getDateFromCell($(this));
1755
+ classes = _this._getCellContents(date, _this.d.cellType);
1756
+ $cell.attr('class',classes.classes)
1757
+ });
1758
+ },
1759
+
1760
+ show: function () {
1761
+ if (this.opts.onlyTimepicker) return;
1762
+ this.$el.addClass('active');
1763
+ this.acitve = true;
1764
+ },
1765
+
1766
+ hide: function () {
1767
+ this.$el.removeClass('active');
1768
+ this.active = false;
1769
+ },
1770
+
1771
+ // Events
1772
+ // -------------------------------------------------
1773
+
1774
+ _handleClick: function (el) {
1775
+ var date = el.data('date') || 1,
1776
+ month = el.data('month') || 0,
1777
+ year = el.data('year') || this.d.parsedDate.year,
1778
+ dp = this.d;
1779
+ // Change view if min view does not reach yet
1780
+ if (dp.view != this.opts.minView) {
1781
+ dp.down(new Date(year, month, date));
1782
+ return;
1783
+ }
1784
+ // Select date if min view is reached
1785
+ var selectedDate = new Date(year, month, date),
1786
+ alreadySelected = this.d._isSelected(selectedDate, this.d.cellType);
1787
+
1788
+ if (!alreadySelected) {
1789
+ dp._trigger('clickCell', selectedDate);
1790
+ return;
1791
+ }
1792
+
1793
+ dp._handleAlreadySelectedDates.bind(dp, alreadySelected, selectedDate)();
1794
+
1795
+ },
1796
+
1797
+ _onClickCell: function (e) {
1798
+ var $el = $(e.target).closest('.datepicker--cell');
1799
+
1800
+ if ($el.hasClass('-disabled-')) return;
1801
+
1802
+ this._handleClick.bind(this)($el);
1803
+ }
1804
+ };
1805
+ })();
1806
+
1807
+ ;(function () {
1808
+ var template = '' +
1809
+ '<div class="datepicker--nav-action" data-action="prev">#{prevHtml}</div>' +
1810
+ '<div class="datepicker--nav-title">#{title}</div>' +
1811
+ '<div class="datepicker--nav-action" data-action="next">#{nextHtml}</div>',
1812
+ buttonsContainerTemplate = '<div class="datepicker--buttons"></div>',
1813
+ button = '<span class="datepicker--button" data-action="#{action}">#{label}</span>',
1814
+ datepicker = $.fn.datepicker,
1815
+ dp = datepicker.Constructor;
1816
+
1817
+ datepicker.Navigation = function (d, opts) {
1818
+ this.d = d;
1819
+ this.opts = opts;
1820
+
1821
+ this.$buttonsContainer = '';
1822
+
1823
+ this.init();
1824
+ };
1825
+
1826
+ datepicker.Navigation.prototype = {
1827
+ init: function () {
1828
+ this._buildBaseHtml();
1829
+ this._bindEvents();
1830
+ },
1831
+
1832
+ _bindEvents: function () {
1833
+ this.d.$nav.on('click', '.datepicker--nav-action', $.proxy(this._onClickNavButton, this));
1834
+ this.d.$nav.on('click', '.datepicker--nav-title', $.proxy(this._onClickNavTitle, this));
1835
+ this.d.$datepicker.on('click', '.datepicker--button', $.proxy(this._onClickNavButton, this));
1836
+ },
1837
+
1838
+ _buildBaseHtml: function () {
1839
+ if (!this.opts.onlyTimepicker) {
1840
+ this._render();
1841
+ }
1842
+ this._addButtonsIfNeed();
1843
+ },
1844
+
1845
+ _addButtonsIfNeed: function () {
1846
+ if (this.opts.todayButton) {
1847
+ this._addButton('today')
1848
+ }
1849
+ if (this.opts.clearButton) {
1850
+ this._addButton('clear')
1851
+ }
1852
+ },
1853
+
1854
+ _render: function () {
1855
+ var title = this._getTitle(this.d.currentDate),
1856
+ html = dp.template(template, $.extend({title: title}, this.opts));
1857
+ this.d.$nav.html(html);
1858
+ if (this.d.view == 'years') {
1859
+ $('.datepicker--nav-title', this.d.$nav).addClass('-disabled-');
1860
+ }
1861
+ this.setNavStatus();
1862
+ },
1863
+
1864
+ _getTitle: function (date) {
1865
+ return this.d.formatDate(this.opts.navTitles[this.d.view], date)
1866
+ },
1867
+
1868
+ _addButton: function (type) {
1869
+ if (!this.$buttonsContainer.length) {
1870
+ this._addButtonsContainer();
1871
+ }
1872
+
1873
+ var data = {
1874
+ action: type,
1875
+ label: this.d.loc[type]
1876
+ },
1877
+ html = dp.template(button, data);
1878
+
1879
+ if ($('[data-action=' + type + ']', this.$buttonsContainer).length) return;
1880
+ this.$buttonsContainer.append(html);
1881
+ },
1882
+
1883
+ _addButtonsContainer: function () {
1884
+ this.d.$datepicker.append(buttonsContainerTemplate);
1885
+ this.$buttonsContainer = $('.datepicker--buttons', this.d.$datepicker);
1886
+ },
1887
+
1888
+ setNavStatus: function () {
1889
+ if (!(this.opts.minDate || this.opts.maxDate) || !this.opts.disableNavWhenOutOfRange) return;
1890
+
1891
+ var date = this.d.parsedDate,
1892
+ m = date.month,
1893
+ y = date.year,
1894
+ d = date.date;
1895
+
1896
+ switch (this.d.view) {
1897
+ case 'days':
1898
+ if (!this.d._isInRange(new Date(y, m-1, 1), 'month')) {
1899
+ this._disableNav('prev')
1900
+ }
1901
+ if (!this.d._isInRange(new Date(y, m+1, 1), 'month')) {
1902
+ this._disableNav('next')
1903
+ }
1904
+ break;
1905
+ case 'months':
1906
+ if (!this.d._isInRange(new Date(y-1, m, d), 'year')) {
1907
+ this._disableNav('prev')
1908
+ }
1909
+ if (!this.d._isInRange(new Date(y+1, m, d), 'year')) {
1910
+ this._disableNav('next')
1911
+ }
1912
+ break;
1913
+ case 'years':
1914
+ var decade = dp.getDecade(this.d.date);
1915
+ if (!this.d._isInRange(new Date(decade[0] - 1, 0, 1), 'year')) {
1916
+ this._disableNav('prev')
1917
+ }
1918
+ if (!this.d._isInRange(new Date(decade[1] + 1, 0, 1), 'year')) {
1919
+ this._disableNav('next')
1920
+ }
1921
+ break;
1922
+ }
1923
+ },
1924
+
1925
+ _disableNav: function (nav) {
1926
+ $('[data-action="' + nav + '"]', this.d.$nav).addClass('-disabled-')
1927
+ },
1928
+
1929
+ _activateNav: function (nav) {
1930
+ $('[data-action="' + nav + '"]', this.d.$nav).removeClass('-disabled-')
1931
+ },
1932
+
1933
+ _onClickNavButton: function (e) {
1934
+ var $el = $(e.target).closest('[data-action]'),
1935
+ action = $el.data('action');
1936
+
1937
+ this.d[action]();
1938
+ },
1939
+
1940
+ _onClickNavTitle: function (e) {
1941
+ if ($(e.target).hasClass('-disabled-')) return;
1942
+
1943
+ if (this.d.view == 'days') {
1944
+ return this.d.view = 'months'
1945
+ }
1946
+
1947
+ this.d.view = 'years';
1948
+ }
1949
+ }
1950
+
1951
+ })();
1952
+
1953
+ ;(function () {
1954
+ var template = '<div class="datepicker--time">' +
1955
+ '<div class="datepicker--time-current">' +
1956
+ ' <span class="datepicker--time-current-hours">#{hourVisible}</span>' +
1957
+ ' <span class="datepicker--time-current-colon">:</span>' +
1958
+ ' <span class="datepicker--time-current-minutes">#{minValue}</span>' +
1959
+ '</div>' +
1960
+ '<div class="datepicker--time-sliders">' +
1961
+ ' <div class="datepicker--time-row">' +
1962
+ ' <input type="range" name="hours" value="#{hourValue}" min="#{hourMin}" max="#{hourMax}" step="#{hourStep}"/>' +
1963
+ ' </div>' +
1964
+ ' <div class="datepicker--time-row">' +
1965
+ ' <input type="range" name="minutes" value="#{minValue}" min="#{minMin}" max="#{minMax}" step="#{minStep}"/>' +
1966
+ ' </div>' +
1967
+ '</div>' +
1968
+ '</div>',
1969
+ datepicker = $.fn.datepicker,
1970
+ dp = datepicker.Constructor;
1971
+
1972
+ datepicker.Timepicker = function (inst, opts) {
1973
+ this.d = inst;
1974
+ this.opts = opts;
1975
+
1976
+ this.init();
1977
+ };
1978
+
1979
+ datepicker.Timepicker.prototype = {
1980
+ init: function () {
1981
+ var input = 'input';
1982
+ this._setTime(this.d.date);
1983
+ this._buildHTML();
1984
+
1985
+ if (navigator.userAgent.match(/trident/gi)) {
1986
+ input = 'change';
1987
+ }
1988
+
1989
+ this.d.$el.on('selectDate', this._onSelectDate.bind(this));
1990
+ this.$ranges.on(input, this._onChangeRange.bind(this));
1991
+ this.$ranges.on('mouseup', this._onMouseUpRange.bind(this));
1992
+ this.$ranges.on('mousemove focus ', this._onMouseEnterRange.bind(this));
1993
+ this.$ranges.on('mouseout blur', this._onMouseOutRange.bind(this));
1994
+ },
1995
+
1996
+ _setTime: function (date) {
1997
+ var _date = dp.getParsedDate(date);
1998
+
1999
+ this._handleDate(date);
2000
+ this.hours = _date.hours < this.minHours ? this.minHours : _date.hours;
2001
+ this.minutes = _date.minutes < this.minMinutes ? this.minMinutes : _date.minutes;
2002
+ },
2003
+
2004
+ /**
2005
+ * Sets minHours and minMinutes from date (usually it's a minDate)
2006
+ * Also changes minMinutes if current hours are bigger then @date hours
2007
+ * @param date {Date}
2008
+ * @private
2009
+ */
2010
+ _setMinTimeFromDate: function (date) {
2011
+ this.minHours = date.getHours();
2012
+ this.minMinutes = date.getMinutes();
2013
+
2014
+ // If, for example, min hours are 10, and current hours are 12,
2015
+ // update minMinutes to default value, to be able to choose whole range of values
2016
+ if (this.d.lastSelectedDate) {
2017
+ if (this.d.lastSelectedDate.getHours() > date.getHours()) {
2018
+ this.minMinutes = this.opts.minMinutes;
2019
+ }
2020
+ }
2021
+ },
2022
+
2023
+ _setMaxTimeFromDate: function (date) {
2024
+ this.maxHours = date.getHours();
2025
+ this.maxMinutes = date.getMinutes();
2026
+
2027
+ if (this.d.lastSelectedDate) {
2028
+ if (this.d.lastSelectedDate.getHours() < date.getHours()) {
2029
+ this.maxMinutes = this.opts.maxMinutes;
2030
+ }
2031
+ }
2032
+ },
2033
+
2034
+ _setDefaultMinMaxTime: function () {
2035
+ var maxHours = 23,
2036
+ maxMinutes = 59,
2037
+ opts = this.opts;
2038
+
2039
+ this.minHours = opts.minHours < 0 || opts.minHours > maxHours ? 0 : opts.minHours;
2040
+ this.minMinutes = opts.minMinutes < 0 || opts.minMinutes > maxMinutes ? 0 : opts.minMinutes;
2041
+ this.maxHours = opts.maxHours < 0 || opts.maxHours > maxHours ? maxHours : opts.maxHours;
2042
+ this.maxMinutes = opts.maxMinutes < 0 || opts.maxMinutes > maxMinutes ? maxMinutes : opts.maxMinutes;
2043
+ },
2044
+
2045
+ /**
2046
+ * Looks for min/max hours/minutes and if current values
2047
+ * are out of range sets valid values.
2048
+ * @private
2049
+ */
2050
+ _validateHoursMinutes: function (date) {
2051
+ if (this.hours < this.minHours) {
2052
+ this.hours = this.minHours;
2053
+ } else if (this.hours > this.maxHours) {
2054
+ this.hours = this.maxHours;
2055
+ }
2056
+
2057
+ if (this.minutes < this.minMinutes) {
2058
+ this.minutes = this.minMinutes;
2059
+ } else if (this.minutes > this.maxMinutes) {
2060
+ this.minutes = this.maxMinutes;
2061
+ }
2062
+ },
2063
+
2064
+ _buildHTML: function () {
2065
+ var lz = dp.getLeadingZeroNum,
2066
+ data = {
2067
+ hourMin: this.minHours,
2068
+ hourMax: lz(this.maxHours),
2069
+ hourStep: this.opts.hoursStep,
2070
+ hourValue: this.hours,
2071
+ hourVisible: lz(this.displayHours),
2072
+ minMin: this.minMinutes,
2073
+ minMax: lz(this.maxMinutes),
2074
+ minStep: this.opts.minutesStep,
2075
+ minValue: lz(this.minutes)
2076
+ },
2077
+ _template = dp.template(template, data);
2078
+
2079
+ this.$timepicker = $(_template).appendTo(this.d.$datepicker);
2080
+ this.$ranges = $('[type="range"]', this.$timepicker);
2081
+ this.$hours = $('[name="hours"]', this.$timepicker);
2082
+ this.$minutes = $('[name="minutes"]', this.$timepicker);
2083
+ this.$hoursText = $('.datepicker--time-current-hours', this.$timepicker);
2084
+ this.$minutesText = $('.datepicker--time-current-minutes', this.$timepicker);
2085
+
2086
+ if (this.d.ampm) {
2087
+ this.$ampm = $('<span class="datepicker--time-current-ampm">')
2088
+ .appendTo($('.datepicker--time-current', this.$timepicker))
2089
+ .html(this.dayPeriod);
2090
+
2091
+ this.$timepicker.addClass('-am-pm-');
2092
+ }
2093
+ },
2094
+
2095
+ _updateCurrentTime: function () {
2096
+ var h = dp.getLeadingZeroNum(this.displayHours),
2097
+ m = dp.getLeadingZeroNum(this.minutes);
2098
+
2099
+ this.$hoursText.html(h);
2100
+ this.$minutesText.html(m);
2101
+
2102
+ if (this.d.ampm) {
2103
+ this.$ampm.html(this.dayPeriod);
2104
+ }
2105
+ },
2106
+
2107
+ _updateRanges: function () {
2108
+ this.$hours.attr({
2109
+ min: this.minHours,
2110
+ max: this.maxHours
2111
+ }).val(this.hours);
2112
+
2113
+ this.$minutes.attr({
2114
+ min: this.minMinutes,
2115
+ max: this.maxMinutes
2116
+ }).val(this.minutes)
2117
+ },
2118
+
2119
+ /**
2120
+ * Sets minHours, minMinutes etc. from date. If date is not passed, than sets
2121
+ * values from options
2122
+ * @param [date] {object} - Date object, to get values from
2123
+ * @private
2124
+ */
2125
+ _handleDate: function (date) {
2126
+ this._setDefaultMinMaxTime();
2127
+ if (date) {
2128
+ if (dp.isSame(date, this.d.opts.minDate)) {
2129
+ this._setMinTimeFromDate(this.d.opts.minDate);
2130
+ } else if (dp.isSame(date, this.d.opts.maxDate)) {
2131
+ this._setMaxTimeFromDate(this.d.opts.maxDate);
2132
+ }
2133
+ }
2134
+
2135
+ this._validateHoursMinutes(date);
2136
+ },
2137
+
2138
+ update: function () {
2139
+ this._updateRanges();
2140
+ this._updateCurrentTime();
2141
+ },
2142
+
2143
+ /**
2144
+ * Calculates valid hour value to display in text input and datepicker's body.
2145
+ * @param date {Date|Number} - date or hours
2146
+ * @param [ampm] {Boolean} - 12 hours mode
2147
+ * @returns {{hours: *, dayPeriod: string}}
2148
+ * @private
2149
+ */
2150
+ _getValidHoursFromDate: function (date, ampm) {
2151
+ var d = date,
2152
+ hours = date;
2153
+
2154
+ if (date instanceof Date) {
2155
+ d = dp.getParsedDate(date);
2156
+ hours = d.hours;
2157
+ }
2158
+
2159
+ var _ampm = ampm || this.d.ampm,
2160
+ dayPeriod = 'am';
2161
+
2162
+ if (_ampm) {
2163
+ switch(true) {
2164
+ case hours == 0:
2165
+ hours = 12;
2166
+ break;
2167
+ case hours == 12:
2168
+ dayPeriod = 'pm';
2169
+ break;
2170
+ case hours > 11:
2171
+ hours = hours - 12;
2172
+ dayPeriod = 'pm';
2173
+ break;
2174
+ default:
2175
+ break;
2176
+ }
2177
+ }
2178
+
2179
+ return {
2180
+ hours: hours,
2181
+ dayPeriod: dayPeriod
2182
+ }
2183
+ },
2184
+
2185
+ set hours (val) {
2186
+ this._hours = val;
2187
+
2188
+ var displayHours = this._getValidHoursFromDate(val);
2189
+
2190
+ this.displayHours = displayHours.hours;
2191
+ this.dayPeriod = displayHours.dayPeriod;
2192
+ },
2193
+
2194
+ get hours() {
2195
+ return this._hours;
2196
+ },
2197
+
2198
+ // Events
2199
+ // -------------------------------------------------
2200
+
2201
+ _onChangeRange: function (e) {
2202
+ var $target = $(e.target),
2203
+ name = $target.attr('name');
2204
+
2205
+ this.d.timepickerIsActive = true;
2206
+
2207
+ this[name] = $target.val();
2208
+ this._updateCurrentTime();
2209
+ this.d._trigger('timeChange', [this.hours, this.minutes]);
2210
+
2211
+ this._handleDate(this.d.lastSelectedDate);
2212
+ this.update()
2213
+ },
2214
+
2215
+ _onSelectDate: function (e, data) {
2216
+ this._handleDate(data);
2217
+ this.update();
2218
+ },
2219
+
2220
+ _onMouseEnterRange: function (e) {
2221
+ var name = $(e.target).attr('name');
2222
+ $('.datepicker--time-current-' + name, this.$timepicker).addClass('-focus-');
2223
+ },
2224
+
2225
+ _onMouseOutRange: function (e) {
2226
+ var name = $(e.target).attr('name');
2227
+ if (this.d.inFocus) return; // Prevent removing focus when mouse out of range slider
2228
+ $('.datepicker--time-current-' + name, this.$timepicker).removeClass('-focus-');
2229
+ },
2230
+
2231
+ _onMouseUpRange: function (e) {
2232
+ this.d.timepickerIsActive = false;
2233
+ }
2234
+ };
2235
+ })();
2236
+ })(window, jQuery);